An Opportunistic Approach for Secure Real-time Transport Protocol (OSRTP)
Abstract
Opportunistic Secure Real-time Transport Protocol (OSRTP) is an implementation of the Opportunistic Security mechanism, as defined in RFC 7435, applied to the Real-time Transport Protocol (RTP). OSRTP allows encrypted media to be used in environments where support for encryption is not known in advance and is not required. OSRTP does not require Session Description Protocol (SDP) extensions or features and is fully backwards compatible with existing implementations using encrypted and authenticated media and implementations that do not encrypt or authenticate media packets. OSRTP is not specific to any key management technique for Secure RTP (SRTP). OSRTP is a transitional approach useful for migrating existing deployments of real-time communications to a fully encrypted and authenticated state.
INFORMATIONAL
Internet Engineering Task Force (IETF) A. Johnston
Request for Comments: 8643 Villanova University
Category: Informational B. Aboba
ISSN: 2070-1721 Microsoft
A. Hutton
Atos
R. Jesske
Deutsche Telekom
T. Stach
Unaffiliated
August 2019
<span class="h1">An Opportunistic Approach for Secure Real-time Transport Protocol</span>
<span class="h1">(OSRTP)</span>
Abstract
Opportunistic Secure Real-time Transport Protocol (OSRTP) is an
implementation of the Opportunistic Security mechanism, as defined in
<a href="./rfc7435">RFC 7435</a>, applied to the Real-time Transport Protocol (RTP). OSRTP
allows encrypted media to be used in environments where support for
encryption is not known in advance and is not required. OSRTP does
not require Session Description Protocol (SDP) extensions or features
and is fully backwards compatible with existing implementations using
encrypted and authenticated media and implementations that do not
encrypt or authenticate media packets. OSRTP is not specific to any
key management technique for Secure RTP (SRTP). OSRTP is a
transitional approach useful for migrating existing deployments of
real-time communications to a fully encrypted and authenticated
state.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for informational purposes.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are candidates for any level of Internet
Standard; see <a href="./rfc7841#section-2">Section 2 of RFC 7841</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="https://www.rfc-editor.org/info/rfc8643">https://www.rfc-editor.org/info/rfc8643</a>.
<span class="grey">Johnston, et al. Informational [Page 1]</span>
<span id="page-2" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="https://trustee.ietf.org/license-info">https://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
<a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-2">2</a>
<a href="#section-1.1">1.1</a>. Applicability Statement . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-2">2</a>. Requirements Language . . . . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-3">3</a>. SDP Offer/Answer Considerations . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-3.1">3.1</a>. Generating the Initial OSRTP Offer . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-3.2">3.2</a>. Generating the Answer . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-3.3">3.3</a>. Offerer Processing the Answer . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-3.4">3.4</a>. Modifying the Session . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-4">4</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-5">5</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-6">6</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-6.1">6.1</a>. Normative References . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-6.2">6.2</a>. Informative References . . . . . . . . . . . . . . . . . <a href="#page-7">7</a>
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-7">7</a>
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
Opportunistic Security (OS) [<a href="./rfc7435" title=""Opportunistic Security: Some Protection Most of the Time"">RFC7435</a>] is an approach to security that
defines a third mode for security between "cleartext" and
"comprehensive protection" that allows encryption and authentication
of media to be used if supported but will not result in failures if
it is not supported. In the context of the transport of secure media
streams using RTP and its secured derivatives, cleartext is
represented by an RTP [<a href="./rfc3550" title=""RTP: A Transport Protocol for Real-Time Applications"">RFC3550</a>] media stream that is negotiated with
the RTP/AVP (Audio-Visual Profile) [<a href="./rfc3551" title=""RTP Profile for Audio and Video Conferences with Minimal Control"">RFC3551</a>] or the RTP/AVPF profile
[<a href="./rfc4585" title=""Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)"">RFC4585</a>], whereas comprehensive protection is represented by a
Secure RTP [<a href="./rfc3711" title=""The Secure Real-time Transport Protocol (SRTP)"">RFC3711</a>] stream negotiated with a secure profile, such as
SAVP or SAVPF [<a href="./rfc5124" title=""Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)"">RFC5124</a>]. OSRTP allows SRTP to be negotiated with the
RTP/AVP profile, with fallback to RTP if SRTP is not supported.
<span class="grey">Johnston, et al. Informational [Page 2]</span>
<span id="page-3" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
There have been some extensions to SDP to allow profiles to be
negotiated, such as SDP Capabilities Negotiation (SDPCapNeg)
[<a href="./rfc5939" title=""Session Description Protocol (SDP) Capability Negotiation"">RFC5939</a>]. However, these approaches are complex and have very
limited deployment in communication systems. Other key management
protocols for SRTP that have been developed, such as ZRTP [<a href="./rfc6189" title=""ZRTP: Media Path Key Agreement for Unicast Secure RTP"">RFC6189</a>],
use OS by design. This approach for OSRTP is based on [<a href="#ref-Kaplan06" title=""Session Description Protocol (SDP) Offer/Answer Negotiation For Best-Effort Secure Real-Time Transport Protocol"">Kaplan06</a>]
where it was called "best effort SRTP". [<a href="#ref-Kaplan06" title=""Session Description Protocol (SDP) Offer/Answer Negotiation For Best-Effort Secure Real-Time Transport Protocol"">Kaplan06</a>] has a full
discussion of the motivation and requirements for opportunistic
secure media.
OSRTP uses the presence of SRTP keying-related attributes in an SDP
offer to indicate support for opportunistic secure media. The
presence of SRTP keying-related attributes in the SDP answer
indicates that the other party also supports OSRTP and that encrypted
and authenticated media will be used. OSRTP requires no additional
extensions to SDP or new attributes and is defined independently of
the key agreement mechanism used. OSRTP is only usable when media is
negotiated using the Offer/Answer protocol [<a href="./rfc3264" title=""An Offer/Answer Model with Session Description Protocol (SDP)"">RFC3264</a>].
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Applicability Statement</span>
OSRTP is a transitional approach that provides a migration path from
unencrypted communication (RTP) to fully encrypted communication
(SRTP). It is only to be used in existing deployments that are
attempting to transition to fully secure communications. New
applications and new deployments will not use OSRTP.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Requirements Language</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
<a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a> [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>] [<a href="./rfc8174" title=""Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words"">RFC8174</a>] when, and only when, they appear in all
capitals, as shown here.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. SDP Offer/Answer Considerations</span>
This section defines the SDP offer/answer considerations for
opportunistic security.
The procedures are for a specific "m=" section describing RTP-based
media. If an SDP offer or answer contains multiple such "m="
sections, the procedures are applied to each "m=" section
individually.
"Initial OSRTP offer" refers to the offer in which opportunistic
security is offered for an "m=" section for the first time within an
SDP session.
<span class="grey">Johnston, et al. Informational [Page 3]</span>
<span id="page-4" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
It is important to note that OSRTP makes no changes to and has no
effect on media sessions in which the offer contains a secure profile
of RTP, such as SAVP or SAVPF. As discussed in [<a href="./rfc7435" title=""Opportunistic Security: Some Protection Most of the Time"">RFC7435</a>], that is
the "comprehensive protection" for media mode.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Generating the Initial OSRTP Offer</span>
To indicate support for OSRTP in an SDP offer, the offerer uses the
RTP/AVP profile [<a href="./rfc3551" title=""RTP Profile for Audio and Video Conferences with Minimal Control"">RFC3551</a>] or the RTP/AVPF profile [<a href="./rfc4585" title=""Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)"">RFC4585</a>] but
includes SRTP keying attributes. OSRTP is not specific to any key
management technique for SRTP, and multiple key management techniques
can be included on the SDP offer. For example:
If the offerer supports DTLS-SRTP key agreement [<a href="./rfc5763" title=""Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)"">RFC5763</a>], then an
"a=fingerprint" attribute will be present. Or:
If the offerer supports SDP Security Descriptions key agreement
[<a href="./rfc4568" title=""Session Description Protocol (SDP) Security Descriptions for Media Streams"">RFC4568</a>], then an "a=crypto" attribute will be present. Or:
If the offerer supports ZRTP key agreement [<a href="./rfc6189" title=""ZRTP: Media Path Key Agreement for Unicast Secure RTP"">RFC6189</a>], then an
"a=zrtp-hash" attribute will be present.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Generating the Answer</span>
To accept OSRTP, an answerer receiving an offer indicating support
for OSRTP generates an SDP answer containing SRTP keying attributes
that match one of the keying methods in the offer. The answer MUST
NOT contain attributes from more than one keying method, even if the
offer contained multiple keying method attributes. The selected SRTP
key management approach is followed, and SRTP media is used for this
session. If the SRTP key management fails for any reason, the media
session MUST fail. To decline OSRTP, the answerer generates an SDP
answer omitting SRTP keying attributes, and the media session
proceeds with RTP with no encryption or authentication used.
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Offerer Processing the Answer</span>
If the offerer of OSRTP receives an SDP answer that does not contain
SRTP keying attributes, then the media session proceeds with RTP. If
the SDP answer contains SRTP keying attributes, then the associated
SRTP key management approach is followed and SRTP media is used for
this session. If the SRTP key management fails, the media session
MUST fail.
<span class="grey">Johnston, et al. Informational [Page 4]</span>
<span id="page-5" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Modifying the Session</span>
When an offerer generates a subsequent SDP offer, it should do so
following the principles of [<a href="./rfc6337" title=""Session Initiation Protocol (SIP) Usage of the Offer/Answer Model"">RFC6337</a>], meaning that the decision to
create the new SDP offer should not be influenced by what was
previously negotiated. For example, if a previous OSRTP offer did
not result in SRTP being established, the offerer may try again and
generate a new OSRTP offer as specified in <a href="#section-3.1">Section 3.1</a>.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Security Considerations</span>
The security considerations of [<a href="./rfc4568" title=""Session Description Protocol (SDP) Security Descriptions for Media Streams"">RFC4568</a>] apply to OSRTP, as well as
the security considerations of the particular SRTP key agreement
approach used. However, the authentication requirements of a
particular SRTP key agreement approach are relaxed when that key
agreement is used with OSRTP, which is consistent with the
Opportunistic Security approach described in [<a href="./rfc7435" title=""Opportunistic Security: Some Protection Most of the Time"">RFC7435</a>]. For example:
For DTLS-SRTP key agreement [<a href="./rfc5763" title=""Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)"">RFC5763</a>], an authenticated signaling
channel does not need to be used with OSRTP if it is not
available.
For SDP Security Descriptions key agreement [<a href="./rfc4568" title=""Session Description Protocol (SDP) Security Descriptions for Media Streams"">RFC4568</a>], an
authenticated signaling channel does not need to be used with
OSRTP if it is not available, although an encrypted signaling
channel MUST still be used.
For ZRTP key agreement [<a href="./rfc6189" title=""ZRTP: Media Path Key Agreement for Unicast Secure RTP"">RFC6189</a>], the security considerations are
unchanged, since ZRTP does not rely on the security of the
signaling channel.
While OSRTP does not require authentication of the key agreement
mechanism, it does need to avoid exposing SRTP keys to eavesdroppers,
since this could enable passive attacks against SRTP. <a href="./rfc4568#section-8.3">Section 8.3 of
[RFC4568]</a> requires that any messages that contain SRTP keys be
encrypted, and further says that encryption SHOULD provide end-to-end
confidentiality protection if intermediaries that could inspect the
SDP message are present. At the time of this writing, it is
understood that the requirement in [<a href="./rfc4568" title=""Session Description Protocol (SDP) Security Descriptions for Media Streams"">RFC4568</a>] for end-to-end
confidentiality protection is commonly ignored. Therefore, if OSRTP
is used with SDP Security Descriptions, any such intermediaries
(e.g., SIP proxies) must be assumed to have access to the SRTP keys.
As discussed in [<a href="./rfc7435" title=""Opportunistic Security: Some Protection Most of the Time"">RFC7435</a>], OSRTP is used in cases where support for
encryption by the other party is not known in advance and is not
required. For cases where it is known that the other party supports
SRTP or SRTP needs to be used, OSRTP MUST NOT be used. Instead, a
secure profile of RTP is used in the offer.
<span class="grey">Johnston, et al. Informational [Page 5]</span>
<span id="page-6" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. IANA Considerations</span>
This document has no actions for IANA.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. References</span>
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. Normative References</span>
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>,
DOI 10.17487/RFC2119, March 1997,
<<a href="https://www.rfc-editor.org/info/rfc2119">https://www.rfc-editor.org/info/rfc2119</a>>.
[<a id="ref-RFC3264">RFC3264</a>] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", <a href="./rfc3264">RFC 3264</a>,
DOI 10.17487/RFC3264, June 2002,
<<a href="https://www.rfc-editor.org/info/rfc3264">https://www.rfc-editor.org/info/rfc3264</a>>.
[<a id="ref-RFC3550">RFC3550</a>] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, <a href="./rfc3550">RFC 3550</a>, DOI 10.17487/RFC3550,
July 2003, <<a href="https://www.rfc-editor.org/info/rfc3550">https://www.rfc-editor.org/info/rfc3550</a>>.
[<a id="ref-RFC3551">RFC3551</a>] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and
Video Conferences with Minimal Control", STD 65, <a href="./rfc3551">RFC 3551</a>,
DOI 10.17487/RFC3551, July 2003,
<<a href="https://www.rfc-editor.org/info/rfc3551">https://www.rfc-editor.org/info/rfc3551</a>>.
[<a id="ref-RFC3711">RFC3711</a>] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
Norrman, "The Secure Real-time Transport Protocol (SRTP)",
<a href="./rfc3711">RFC 3711</a>, DOI 10.17487/RFC3711, March 2004,
<<a href="https://www.rfc-editor.org/info/rfc3711">https://www.rfc-editor.org/info/rfc3711</a>>.
[<a id="ref-RFC4568">RFC4568</a>] Andreasen, F., Baugher, M., and D. Wing, "Session
Description Protocol (SDP) Security Descriptions for Media
Streams", <a href="./rfc4568">RFC 4568</a>, DOI 10.17487/RFC4568, July 2006,
<<a href="https://www.rfc-editor.org/info/rfc4568">https://www.rfc-editor.org/info/rfc4568</a>>.
[<a id="ref-RFC4585">RFC4585</a>] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey,
"Extended RTP Profile for Real-time Transport Control
Protocol (RTCP)-Based Feedback (RTP/AVPF)", <a href="./rfc4585">RFC 4585</a>,
DOI 10.17487/RFC4585, July 2006,
<<a href="https://www.rfc-editor.org/info/rfc4585">https://www.rfc-editor.org/info/rfc4585</a>>.
[<a id="ref-RFC5124">RFC5124</a>] Ott, J. and E. Carrara, "Extended Secure RTP Profile for
Real-time Transport Control Protocol (RTCP)-Based Feedback
(RTP/SAVPF)", <a href="./rfc5124">RFC 5124</a>, DOI 10.17487/RFC5124, February
2008, <<a href="https://www.rfc-editor.org/info/rfc5124">https://www.rfc-editor.org/info/rfc5124</a>>.
<span class="grey">Johnston, et al. Informational [Page 6]</span>
<span id="page-7" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
[<a id="ref-RFC5763">RFC5763</a>] Fischl, J., Tschofenig, H., and E. Rescorla, "Framework
for Establishing a Secure Real-time Transport Protocol
(SRTP) Security Context Using Datagram Transport Layer
Security (DTLS)", <a href="./rfc5763">RFC 5763</a>, DOI 10.17487/RFC5763, May
2010, <<a href="https://www.rfc-editor.org/info/rfc5763">https://www.rfc-editor.org/info/rfc5763</a>>.
[<a id="ref-RFC6189">RFC6189</a>] Zimmermann, P., Johnston, A., Ed., and J. Callas, "ZRTP:
Media Path Key Agreement for Unicast Secure RTP",
<a href="./rfc6189">RFC 6189</a>, DOI 10.17487/RFC6189, April 2011,
<<a href="https://www.rfc-editor.org/info/rfc6189">https://www.rfc-editor.org/info/rfc6189</a>>.
[<a id="ref-RFC7435">RFC7435</a>] Dukhovni, V., "Opportunistic Security: Some Protection
Most of the Time", <a href="./rfc7435">RFC 7435</a>, DOI 10.17487/RFC7435,
December 2014, <<a href="https://www.rfc-editor.org/info/rfc7435">https://www.rfc-editor.org/info/rfc7435</a>>.
[<a id="ref-RFC8174">RFC8174</a>] Leiba, B., "Ambiguity of Uppercase vs Lowercase in <a href="./rfc2119">RFC</a>
<a href="./rfc2119">2119</a> Key Words", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc8174">RFC 8174</a>, DOI 10.17487/RFC8174,
May 2017, <<a href="https://www.rfc-editor.org/info/rfc8174">https://www.rfc-editor.org/info/rfc8174</a>>.
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Informative References</span>
[<a id="ref-Kaplan06">Kaplan06</a>] Kaplan, H. and F. Audet, "Session Description Protocol
(SDP) Offer/Answer Negotiation For Best-Effort Secure
Real-Time Transport Protocol", Work in Progress,
<a href="./draft-kaplan-mmusic-best-effort-srtp-01">draft-kaplan-mmusic-best-effort-srtp-01</a>, October 2006.
[<a id="ref-RFC5939">RFC5939</a>] Andreasen, F., "Session Description Protocol (SDP)
Capability Negotiation", <a href="./rfc5939">RFC 5939</a>, DOI 10.17487/RFC5939,
September 2010, <<a href="https://www.rfc-editor.org/info/rfc5939">https://www.rfc-editor.org/info/rfc5939</a>>.
[<a id="ref-RFC6337">RFC6337</a>] Okumura, S., Sawada, T., and P. Kyzivat, "Session
Initiation Protocol (SIP) Usage of the Offer/Answer
Model", <a href="./rfc6337">RFC 6337</a>, DOI 10.17487/RFC6337, August 2011,
<<a href="https://www.rfc-editor.org/info/rfc6337">https://www.rfc-editor.org/info/rfc6337</a>>.
Acknowledgements
This document is dedicated to our friend and colleague Francois Audet
who is greatly missed in our community. His work on improving
security in SIP and RTP provided the foundation for this work.
Thanks to Eric Rescorla, Martin Thomson, Christer Holmberg, and
Richard Barnes for their comments.
<span class="grey">Johnston, et al. Informational [Page 7]</span>
<span id="page-8" ></span>
<span class="grey"><a href="./rfc8643">RFC 8643</a> OSRTP August 2019</span>
Authors' Addresses
Alan Johnston
Villanova University
Villanova, PA
United States of America
Email: [email protected]
Bernard Aboba
Microsoft
One Microsoft Way
Redmond, WA 98052
United States of America
Email: [email protected]
Andrew Hutton
Atos
Mid City Place
London WC1V 6EA
United Kingdom
Email: [email protected]
Roland Jesske
Deutsche Telekom
Heinrich-Hertz-Strasse 3-7
Darmstadt 64295
Germany
Email: [email protected]
Thomas Stach
Unaffiliated
Email: [email protected]
Johnston, et al. Informational [Page 8]