Internet DRAFT - draft-cheney-security
draft-cheney-security
25 April 2010
INTERNET-DRAFT A. Cheney
Application Working Group US Army
Catagory: Informational April 2010
Proposal for Application Layer Security Solution
draft-cheney-security-00
Status of this Memo
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) 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.
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on October 22, 2010.
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved.
Comments
Please send comments to austin.cheney@us.army.mil
This document has no actions for IANA.
Cheney Informational [Page 1]
Internet-Draft Application Layer Security Solution April 2010
Abstract
The application layer of the internet is inherently insecure. This
paper proposes a security solution, a modular apporach to separation
where that separation provides alternative functionality to the
limits imposed by the solution, and dynamic protocol switching within
a given session.
Table of Contents
1.0 Introduction ..................................................... 3
1.1 Prior Knowledge ............................................... 3
1.2 Standards are a Mess .......................................... 3
1.3 Layering Considered Harmful ................................... 5
2.0 The Threat ....................................................... 6
3.0 Introduction to Client-side Scripting ............................ 7
3.1 JavaScript .................................................... 7
3.2 Flash/ActionScript ............................................ 8
3.3 Acrobat/PDF ................................................... 8
3.4 ActiveX ....................................................... 8
4.0 The Solution for Client-Side Scripting ........................... 9
4.1 The Rule ...................................................... 9
4.2 The Need for a Commonly Shared Structure ..................... 10
4.3 First Example ................................................ 11
4.4 Second Example ............................................... 12
4.5 Third Example ................................................ 12
5.0 Network Application Model - Processing Syntax ................... 13
5.1 Character Set ................................................ 13
5.2 Layer Name ................................................... 13
5.3 Network Application Layer Encapsulation ...................... 13
5.4 White Space Minimization ..................................... 13
5.5 Syntax Failure Conditions .................................... 14
5.6 Network Application Model - Example .......................... 14
6.0 Layers of the Network Application Model ......................... 14
6.1 Protocol Layer of the Network Application Model .............. 14
6.2 State Layer of the Network Application Model ................. 15
6.3 Persistence Layer of the Network Application Model ........... 16
6.4 Address Layer of the Network Application Model ............... 16
6.5 Type Layer of the Network Application Model .................. 17
6.6 Data Layer of the Network Application Model .................. 17
6.7 Audio/Visual Layer of the Network Application Model .......... 18
7.0 Malicious Files and Media ....................................... 18
7.1 Solutions to Malicious Files ................................. 19
7.2 Uniformly Encapsulating the Mime Type ........................ 19
8.0 Stored Addressable Data ......................................... 20
9.0 Malicious Security Problems not solved by this proposal ......... 20
9.1 Security is Not Privacy ...................................... 20
9.2 Privacy Disclosure ........................................... 21
9.3 Inside Attacker .............................................. 21
9.4 Social Engineering ........................................... 21
Cheney Informational [Page 2]
Internet-Draft Application Layer Security Solution April 2010
9.5 Code Injection ............................................... 22
9.6 Cross-Site Request Forgery ................................... 22
9.7 Passwords in the Clear ....................................... 23
9.8 Password Guessing ............................................ 23
10.0 Summary ........................................................ 23
10.1 Persons at Risk ............................................. 24
11.0 Sources ........................................................ 24
1.0 Introduction
1.1 Prior Knowledge
This proposal requires prior knowledge of the OSI network model, as
defined in ISO 7498 and ISO, and TCP/IP (Cerf, Dalal, & Sunshine,
1974) network model, as defined in RFC 1122 (Braden, 1989). This
document references these network architectures to establish a
similar architectural model with regard to a specific layer of those
architectures. This proposal also requires familiarity with URI
syntax, as defined in RFC 3986 (Berners-Lee, Fielding, & Masinter,
2005), and knowledge of IRI features, as defined in RFC 3987 (Duerst
& Suignard, 2005), since this proposal requires use of those
technology definitions.
This proposal requires some conceptual familiarity of a session ID.
A session ID is an identifier attached to a data packet so the
consuming application will know which data on the wire to process and
which data to ignore. An example is a browser with multiple open
tabs. Received data is processed separately in each tab and never
does data requested from one tab enter the processing of another tab.
Each tab only processes data with a specific session ID and ignores
all other data from the network interface. This precise separation
between different applications, and even separation within a single
application, is the purpose of session data in a layered
architecture, or specifically the session layer of the OSI model.
1.2 Standards are a Mess
Without the presence of architecture to dictate how a body or system
of technology should operate the standards upon such technology have
little value upon the industry they service. Successful standards
are specific in language and purpose to a single body of technology
(Bradley & Byrd, 2007). Standards exist to dictate a presence of
conformant operation, or consistency (World Wide Web Consortium), for
the specific technology body between different vendors and possibly
even different means of consumption by a higher order technology
body. Strong standards do not exist to define execution of a
technological function, because the work then becomes a technology
itself and not a standard upon such a technology. In other words,
standards exist to allow interchange of automated features between
vendors, and even possibly between other technologies, but are not
the technology they describe. When standards become confused upon
the nature of their existence, such as actually defining a
technological execution in excess of conformance, they tend to become
more costly to accept into an automated process and tend to become a
Cheney Informational [Page 3]
Internet-Draft Application Layer Security Solution April 2010
terminal work (James, 2008). When a standard becomes a terminal work
future standards that are not so limited cannot consume the terminal
standard without becoming a terminal work themselves. Standards
evident as terminal works are weak standards, and yet may represent
strong technology.
The application layer of networking contains thousands of such
standards from several various standards bodies. Such standardizing
bodies may include: International Standards Organization (ISO),
Internet Engineering Task Force (IETF), World Wide Web Consortium
(W3C), European Computer Manufacturing Association (ECMA), Oasis,
Institute of Electrical and Electronics Engineers (IEEE), and the
list goes on into ad nauseam. Some of these organizations have
published thousands of standards with different versions and updates
to each. Very few people, even after decades of dedicated study and
authoring, can describe the range of available standards with any
degree of clarity, and perhaps nobody can fully address the nature of
relationship between each of those standards. Standards in the
application layer of networking are a mess.
Before a standard is published by a standards body it must pass
through a lengthy and often challenging peer review process to ensure
the standard addresses a subject of value and the changes it imposes
are not harmful to the nature of networking or consuming processes.
Once a standard is accepted and approved it may not be immediately
published. A necessary delay may be imposed by the publishing
standards body to prevent disruption with current events or conflict
with other standards currently in development. When the standard is
published it is not immediately consumed by the intended audience.
The intended audience must run tests themselves to ensure the
standard can be integrated accurately and fully without conflict to
current method of operation. Even after a standard is consumed by
the intended audience it may be years before the desired changes or
protections are reflected upon the intended field of technology. End
users tend to delay development towards new standards until an
acceptable percentage of their market is capable of consuming or
processing that standard independent of particular vendors. In other
words, it takes years, possibly a decade or longer, for a standard to
be fully integrated into the body of technology it is written to
standardize. Since it takes so very long for a standard to become
standard practice standards are rarely, if ever, retired. The only
common method of retiring a standard is to replace it with either
updated language or a revision. This means that once a standard
enters an industry it is there to stay until all persons who remember
the standard retire regardless of the barriers to innovation provided
by a potentially weak standard.
Thousands of standards are published from many several standards
bodies, sometimes in conflict to standards from other standards
bodies (Severance, 1998) (Kostelnick, 1998). Some of those standards
are confused to the nature of their existence and thus create a
Cheney Informational [Page 4]
Internet-Draft Application Layer Security Solution April 2010
barrier to the nature of standardization. Because there are so many
standards it is possible that nobody knows how they are all intended
to operate together. Once a standard enters the market it is there
almost forever. This is a hopeless state of technology complexity
and a defeat of innovation, but it does not have to be that way.
The chaos mentioned above may describe a variety of technology or
industry fields, but it certainly applies to the application layer of
networking directly. Other fields of innovation do not seem so
burdened and overwhelmed by a plethora of possibly conflicting
standards, because many other fields of development and industry are
governed by models of separation. The natural procession of
industrialization then is to create standards to provide conformance
and when the quantity of standards or the relationships between
standards becomes too complex create a model of separation to govern
the standards.
Models of separation exist under various names, such as: taxonomy,
body of knowledge, domains, architecture, outline, or doctrine. An
unintended benefit of models of separation is the scope definition
upon which a standard applies amongst a body of standards and how
those relationships are defined. This benefit is important as it
limits harm from weak terminal standards, where that harm might
otherwise be not evident or so limited. This paper provides a model
of separation to the application layer of networking where such a
separation does not prior exist, and refers to such a model as a
layered architecture with the name Network Application Model. This
paper takes the position that the absence of such architecture has
allowed an environment of somewhat isolated ad hoc solutions whose
presence has produced an environment where technologies'
relationships to each other is in conflict to secure operation
without violation to the intended operation of those technologies.
1.3 Layering Considered Harmful
Section 3 of RFC 3934 (Wasserman, 2004) is titled, 'Layering Consider
Harmful', which makes the point that strict layering of network data
is harmful to efficiency of processing and is disruptive to context
of the processing of data in whole. This paper agrees with the
second point made if the layering of information relevant to network
processing consists of removing data from the whole apart from
individual processing of information for an information body where
that information retains integrity apart from fragmentation. This
paper disagrees with the second point when the whole of data remains
available to derive context even in accordance with strict layered
processing. The point regarding efficiency suggests each prior layer
of processing is necessary before processing from the next layer in
the architectural stack and that such fragmented processing is
disruptive to efficiency apart from a single processing of the data
in whole. This paper disagrees with this position as processing
conflicts that arise from deregulation of a layered processing scheme
are disruptive and costly, with regards to security consideration and
Cheney Informational [Page 5]
Internet-Draft Application Layer Security Solution April 2010
network data collisions, more so than the excessive processing
required by such regulation. The disruption and resultant faults are
the effectuality of ad hoc development absent the limitations of a
structured conformance. This paper makes the case that an
unregulated application environment is more costly and disruptive,
due to the volume of security incidents in vulnerabilities and cost
of breaches, than the implementation and conformance to a regulated
architecture.
2.0 The Threat
The most significant threat to security of information is primarily
the result of three weaknesses resident in the application layer of
networking. Weaknesses in the application layer of network
architectures account for almost every annually reported
vulnerability with four of the top five reported vulnerabilities
reported for 2009 existing as a form of client-side scripting from
web browsers (Symantec Corporation, 2010). The web is the most
vulnerable software interface ever created and so it is the most
frequently compromised, however worms propagated through email may
account for more severe and rapidly spreading infections. The web is
so vulnerable that during 2008 more than 13% of 12,000 tested
websites can be compromised completely automatically and 49% contain
critical vulnerabilities (Gordeychik, et al., 2010). Many
distributed botnet systems are managed from application interfaces
present in Internet Relay Chat (IRC) (Symantec Corporation, 2010).
No application protocol is to blame in isolation. The problem is a
lack of regulation upon application execution in a networked
environment.
The public internet is 30 years old and the web is 20 years old
(Howe, 2010). No solution to this security problem has ever been
proposed. Further to the point, there is no security standard for
application processing across a multiple networked parties using the
web or any other sort of general web security standard. The latest
form of HTML, HTML 5, only intends to amplify the quantity and
severity of the problem through integration of scripted dynamic media
interfaces, more reliance upon client-side scripting to promote an
application environment instead of an application layer to a
networked environment, and scripted access to static media data
(Hickson, 2010). This proposal makes the claim that if necessary
regulations are supplied for application execution in a networked
environment a significant majority of the current threat would be
incapable of existing.
With the severity of acceleration of security compromises year over
year, especially with consideration for attacks intended to mitigate
a trusted and encrypted network session, the application layer cannot
be considered a trusted environment without the necessary regulation.
A trusted environment is absolutely required for commerce exchange,
transmission of personally identifiable information, a networked
application interface (cloud computing), or data storage. A solution
Cheney Informational [Page 6]
Internet-Draft Application Layer Security Solution April 2010
must be proposed and executed or the internet, by result, must be
considered a harmful environment where all data theft and application
compromise is the legally acceptable result of an otherwise not
trusted environment. This document intends to propose a solution and
not a mitigation to the security problem. An application cannot hope
to become secure until it is changed to operate securely, and that is
not occurring on the Internet's application layer as described
previously with HTML 5 (Hickson, 2010).
Of these three weaknesses the most dangerous is by means of direct
execution of malicious code, or media, often through social
engineering means. 49% of web based attacks in 2009 were the result
of malicious PDF media containing client-side scripting (Symantec
Corporation, 2010). The most significant quantity of attacks is by
means of client-side scripting execution (Symantec Corporation,
2010). The third weakness is unauthorized automated resolution of
stored addressable data, which allows malicious code to replicate
over a network.
3.0 Introduction to Client-side Scripting
Client-side scripting is any means of application execution where
that execution is resident upon data supplied to a user or code
executed upon data separate from the compiled application performing
that execution. Client-side scripting can occur in various different
manners. Client-side scripting is programmatic code that is written
by remote parties to be executed by a separate user-agent application
without means to verify integrity or authenticity. Since such
programming code is written by strangers and silently executed by
visiting consumers it may result in an attack that is immediate,
massively distributed, always effective, and largely unknown to both
the executing party and the distributing party.
3.1 JavaScript
The most frequent form of client-side scripting is JavaScript
language from the World Wide Web. JavaScript is a unique language
based upon a lambda model of inheritance and a unique form of
object-orientation. This language is supplied in plain text
characters either directly in the code of a webpage, or as separate
files requested by a webpage. Nearly every form of dynamic or
interactive event or response that occurs in a webpage is a result of
JavaScript execution in reflected as an action or interactive
condition supplied by a user, referred to as an event.
JavaScript can also open a separate communication, using the
XMLHttpResponse programming object, and download additional
executable code or send data without notifying a user. This form of
separated communication is frequently referred to as Asynchronous
JavaScript and XML, or AJAX. If the AJAX is a part of malicious
JavaScript supplied to a user it can be used to send secure personal
data from a user to a third party without regard for encryption
between a user and a web server. Malicious AJAX can supply false
Cheney Informational [Page 7]
Internet-Draft Application Layer Security Solution April 2010
content data to defame the source content requested by the web user.
JavaScript does have a native security model often referred to as the
same origin policy that prevents JavaScript from reading into an area
of a browser window served from a separate scheme and authentication
part of a URI string. The same origin policy protects the leaking of
private data into malicious advertisements displaying in an iframe
HTML object, for example, but does not prevent AJAX from sending data
to separate domain.
3.2 Flash/Actionscript
Flash is an interactive vector animation media with supplied
scripting code compiled to a unique binary data file that is executed
by Flash Player software. Since the script code is compiled into the
intended data/media it cannot be altered after the fact. The script
code, known as Actionscript, is a newer form of JavaScript that
executes from the Flash Player in response to user events mimicking a
native application effect.
Malicious Actionscript can be written to compromise software
vulnerabilities in the Flash Player and any possibly software
executing the Flash Player. Such attacks against the execution of
compiled applications from user supplied scripting code are typically
referred to as memory corruption attacks. In these types of attacks
a user will execute a Flash media file with malicious code that
interrupts the memory address space assigned from the operating
system software to the Flash Player application. This form of attack
targets a known vulnerability in the Flash Player software that
allows the malicious code author to compromise the operating system
software or execute malicious code outside the Flash Player software.
If the Flash Player software is compromised when executing from a web
browser software the malicious coder can also execute code against
known vulnerabilities in the containing web browser.
3.3 Acrobat/PDF
The vulnerabilities in Adobe Acrobat software are nearly identical to
those described in the Flash Player software since a PDF file can
become interactive if supplied with client-side code that is executed
by the Adobe Acrobat software.
3.4 ActiveX
ActiveX is a client-side scripting language invented by Microsoft
that executes in a manner similar to JavaScript, but can also access
programmatic features of Microsoft's web browser, Internet Explorer,
and execute limited features of the graphic user interface and file
system, known as Explorer, of Microsoft's operating system. ActiveX
features all the same vulnerabilities as JavaScript. If it is able
to execute the XMLHttpRequest object then it has the same
vulnerabilities as AJAX. Since ActiveX has access to software
outside Internet Explorer it can also execute vulnerabilities outside
Cheney Informational [Page 8]
Internet-Draft Application Layer Security Solution April 2010
Internet Explorer and violate privacy outside Internet Explorer. In
2009 ActiveX vulnerabilities accounted for 3 of the top 10 web
attacks (Symantec Corporation, 2010).
4.0 The Solution for Client-Side Scripting
Client-side scripting must be abandoned in all forms. Acceptable
programmatic application code is either executed directly against the
operating system software directly, or entirely is absent a network
interface or network processing software. When programmatic code
exists outside those two conditions it must be considered potentially
malicious, and therefore not safe. This implies all client-side
scripting must be considered potentially malicious even if it is
supplied from a trusted source, or supplied as compiled code supplied
with media, or is a function of an interactive means.
4.1 The Rule
The solution to this problem of client-side scripting is to create a
layered application model by which data and software intended for
exchange over a network are fundamentally separated. In a networked
environment data and programmatic code, intended for evaluation or
execution in a programmatic manner, must not integrate into a single
source, ever, on any level. Data is information that exists in a
static state and does not supply logic for evaluation. Programmatic
code is any means of supplying logic for evaluation by a computer.
When this rule is violated the data is always open to attack by a
malicious means in a networked environment and the user is always
open to compromise when accessing their data. The means to achieving
the solution is to create an application environment that does not
contain client-side scripting and accomplishes the interaction and
usability objectives inspired by client-side scripting.
The rule must apply to all application processing units receiving
data or transmitting data across a network. This means every
processing unit regardless of status as client, server, or something
else. In 2008 52% of web vulnerabilities occurred on the server side
while 48% occurred on the client side (Gordeychik, et al., 2010).
Data received from a network interface that refers to programmatic
code to be delivered across a network interface is considered a
violation of the separation rule even if the code referenced by the
data is a separate file. Even if the programmatic code is separated
from the data into separate files the transfer of that programmatic
code is the result of a request for data and not a request for
programmatic code. Since, in this case, the request for data cannot
be separated from the request for programmatic code the separation
rule is violated. Data received from a network interface must not be
able to request programmatic code unless the requested programmatic
code is locally available and resident upon the local processing
computational device. If received data does make a request for
programmatic code across a network interface that request must be
ignored.
Cheney Informational [Page 9]
Internet-Draft Application Layer Security Solution April 2010
Programmatic code received from a network interface must, likewise,
not be able to request data unless that data is locally resident upon
the local processing computational device. This rule applied to
programmatic code would prevent any application software from serving
as a protocol processing application, and so exceptions to this rule
must be allowed. Valid exceptions must become a vehicle to violate
or bend the rule of separation. To prevent such violation an
exception to separation as it applies to requests from programmatic
code must adhere to these conditions:
1. The programmatic application must not be bundled with data
intended for distribution across a network. A programmatic
application in violation of this rule must be presumed malicious.
2. The application must prompt the user and receive authorization
from the user that it seeks to send and/or receive data from a
network. This prompt and authorization is not required to occur
more than once per application protocol.
3. If the application is received from a network interface the
application, as part of the installation process into the
operating system or first time execution, would verify its
integrity by hash comparison between a generated hash of itself
and an unpublished hash value at an authorized publisher that is
verified by the executing user.
4.2 The Need for a Commonly Shared Structure
If there exists a structure of data requirements for data resident in
the OSI application layer the desired effect of client-side scripting
can be achieved in an application locally installed opposed to
temporarily transmitted code that is not trusted. An exemplification
of such a structure is to divide the application layer into a layered
model called the Network Application Model.
This model features 7 layers, where the most foundational layer is at
the bottom and each rising layer is progressively lesser
foundational, that define the processing requirements and resolution
of transmitted application data. Each layer has a specific purpose
and is required to be separated from each other layer. It is this
uniform separation that makes the model functionally successful.
Data is required, according to each layer's definition, at each
layer. If a layer does not contain the required data the request
must be considered corrupt and a user-agent software may request the
data again or abandon the communication altogether. This model is to
apply to all applications processing data from a distant party
including service applications not affiliated with an end user.
Cheney Informational [Page 10]
Internet-Draft Application Layer Security Solution April 2010
The Network Application Model
7. Audio/Visual
6. Data
5. Type
4. Address
3. Persistence
2. State
1. Protocol
The intended objective of this model is to define the precise
application requirements of data so that the engaged session is not
inherently bound to the context of a single application protocol.
This means a requesting entity may propose a network communication
with a given session ID and change communication from the current
protocol to another.
Consequently, no more than one application must be actively assigned
to a single session ID at any given time to avoid potential data
processing collisions from a transmission coupling effect. If
application data is sent to an application that is already assigned a
session ID the application must reject the data unless the
application prompts a user to make a choice. This limitation is
significantly important with regard to an inactive state as defined
below in the state layer.
When a protocol that offers encryption is exchanged for a protocol
that does not offer encryption, such as HTTPS to HTTP, the encryption
is terminated, and that termination must be complete and permanent
for the provided session. Encryption must not be resumed
automatically upon resuming use of the protocol offering encryption.
In transition from an unencrypted protocol to an encrypted protocol
the requestor must always be challenged by the replying entity. If
no challenge is provided from the replying entity to the requestor
upon changing to an encrypted protocol the transmission must be
presumed hostile and abandoned by the requestor's processing
application. Such a challenge must force a response from the
impacted user that is not automatically or application generated.
This process must occur at every instantiation of an encrypted
transmission, or authentication must be denied by the replying entity
with presumption that requestor is a malicious agent.
4.3 First Example
An example would be a user communicating to another user, by means of
a proprietary instant messaging service, could propose to communicate
using a separated proprietary cloud based software under the context
of the same session ID so that when this second form of communication
is complete both users respectfully return to their instant message
communication without interruption. In this example a user who
needed to overcome the finite limitations of one communication
protocol without breaking session was able to change the protocol to
Cheney Informational [Page 11]
Internet-Draft Application Layer Security Solution April 2010
execute a separate application and, once completed, return to the
instant message software as though there is no interruption to the
engaged conversation or application limitation preventing that
engagement.
4.4 Second Example
Another example is a user wishing to navigate to an online map
service from the web. In this case the user would navigate the web
using the HTTP protocol until the user arrived at the desired
location. Once at the desired location the user would need to
process a map media and then supply input and request changes to
output. Currently, the task of supplying additional input to achieve
more specific output is the result of executing client-side scripting
upon a tool set to allow zooming and panning around a visual map.
The removal of client-side scripting means the user no longer
supplies changes to the map through the context of the web page. A
separate application not reliant upon client-side scripting must be
used and can be used in the context of a webpage so long as the
programmatic code is resident upon the application and only data is
transmitted by execution of that application.
Another solution to the prior example is software that universally
accepts vendor specific application programming interface (API)
instruction modules to interface between a user's interaction and a
dynamic request for data at the vendor. This solution would be
valid, in accordance with the Network Application Model, so long as
it never couples data with the API instructions. To ensure the
application is safe and not compromised software the API should
contain a hash value that it sends to the remote destination along
with each data request where the data request is authenticated. Upon
authentication of the hash value the requested data is returned to
the requestor. The generic software accepting the API should deny
integration of any API for which a hash value cannot be verified at
the trusted destination. Such a mechanism would make providing
spoofed software/interfaces more difficult, and if the hash value is
compiled to byte code from the originating source it would not be
open to malicious alteration. Such a process should resemble
certificate authentication to validate encryption of a trusted HTTPS
connection.
4.5 Third Example
Another example is where a user clicks a button in a form on a HTML
web page and a calendar appears to assist a user in making date
decisions or even a decision for a span of dates. Client-side
scripting would likely generate the calendar referencing the current
date. What is defined as the number of days in a month and where in
the week the first day of the month must appear with regard to a
fixed reference point in the client-side scripting code based upon a
known static calendar. The current date referenced by the
client-side scripting comes from interpretation of the processing
application, which references the date from the operating system,
Cheney Informational [Page 12]
Internet-Draft Application Layer Security Solution April 2010
which references the date from date stored on the resident computer's
hardware CMOS. Even if there exists a running application service to
regularly synchronize date and time information from a remote network
source the service likely only supplies changes to the date and time
settings saved in the CMOS via the operating system and not
dynamically supply this data to applications executing on the
operating system in conflict of the data stored on the CMOS. Since
everything on the computer receives the date and time data from the
same single source the only reason to process any client-side
scripting is to provide programmatic instruction to access the date
and to generate a custom calendar application. The consuming
application is capable of providing a calendar using a similar code
processing means, which only leaves the instruction to dynamically
access a dynamic calendar application apart from an otherwise static
document.
This calendar problem can be solved with various methods not
requiring client-side scripting. One possible solution is to supply
a named element that is recognized by the consuming application and
returns the desired instruction. Another solution is to supply a
known keyword to the consuming application where that key is defined
using either a syntax means and/or a vocabulary to a processing API
compiled into the consuming application.
5.0 Network Application Model - Processing Syntax
5.1 Character Set
The character data stored and transmitted at a Network Application
Model must be encoded as UTF8 characters. Processing and conversion
of UTF8 characters to other encoding schemes must match the
conformance required by the IRI specification defined in RFC 3987
(Duerst & Suignard, 2005).
5.2 Layer Name
The lowercase English name of each layer must precede the contents of
each layer and be wrapped in triple colons. The layer name must be
preceded by and followed by a single paragraph separator character
(U+2029).
5.3 Network Application Layer Encapsulation
The first characters of the Network Application Model must be ">#"
and the final characters must be a paragraph separator character
(U+2029) followed by "#<".
5.4 White Space Minimization
All white space must be tokenized prior to transmission. Tokenized
white space is where all white space characters are converted to a
space character and all consecutive spaces after the first in a
series of consecutive spaces must be removed.
Cheney Informational [Page 13]
Internet-Draft Application Layer Security Solution April 2010
5.5 Syntax Failure Conditions
* If a layer name is not supplied or is not properly formatted
processing must fail.
* If the ">#" start sequence is not present processing must fail.
* Termination of payload delivery for a TCP based protocol is fixed
at a known point. For data services transmitted over UDP based
protocols only the first fully received data packet requires the
complete Network Application Model. If the terminating character
sequence, paragraph separator character (U+2029) and "#<", is not
present upon completion of the delivered payload processing must
fail.
* Syntax verification must occur before any data is interpreted for
execution.
* The contents of each layer must be interpreted as text data only
and never executed directly as application instructions to prevent
code injection.
5.6 Network Application Model - Example
>#
:::protocol:::
http
:::state:::
static
:::persistence:::
]persistence[none]/persistence[
:::address:::
http://example.com/webpage.html
:::type:::
application/xhtml+xml;iso88591
:::data:::
]dataLayer[web page HTML code]/dataLayer[
:::audio/visual:::
relativepath/stylesheet.css
relativepath/second.css
#<
6.0 Layers of the Network Application Model
6.1 Protocol Layer of the Network Application Model
The protocol layer contains the protocol of the application service.
Some examples include HTTP, SNMP, IRC, XMPP, and FTP. The protocol
name must be stated explicitly in this layer and not presumed from
the request by the requesting application or from the IP port. The
only valid value must be the name of the protocol in lowercase Latin
alpha or Latin numbers characters. If the value supplied in this
layer contains characters of another type the data request must be
deemed corrupt. If the network data transaction is the result of a
user request, such as a HTTP "get", the protocol must be explicitly
defined by the requesting application. If the protocol is the result
of a data exchange not requested by a user, such as the push nature
of SMTP, the protocol must be stated in the application data header.
Cheney Informational [Page 14]
Internet-Draft Application Layer Security Solution April 2010
Decisions upon execution or delivery of the session ID to separate
conforming application data arriving to a single network node from a
network interface must be decided before interpretation of the next
Network Application Model layer.
6.2 State Layer of the Network Application Model
The state layer contains a keyword to designate the expected duration
of a data session, as known to applications by virtue of a session
ID. This layer allows an application to make decisions about session
congestion to improve processing efficiency upon data received from
multiple continuous separate application requests from a single
network interface. If the state data is not supplied by the remote
source the value must be "static". The value for the state layer
must be processed prior to processing of the next layer in the
Network Application Model. This layer may receive one of these
following values:
static
active
inactive
The value static explicitly states that the limit of the data session
is limited to the transmission of requested files only and upon
delivery of the requested file the session is destroyed without
regard for processing decisions supplied by the application.
The value active determines the data session expects to continually
receive data and must continually remain open and available, such as
a UDP stream or IRC connection. An active state is necessary for the
processing of streaming media, such as radio or television, where the
data is supplied continuously and without end. An active state may
be terminated from a remote source by disconnecting the communication
on the remote end, or may be terminated by the processing application
upon user request or in conformance to a user supplied or application
supplied configuration. All communications in an active state must
be terminated prior to the processing termination of the processing
application and should be terminated by the operating system software
if the active state remains open after the processing application has
terminated in case of an improper termination.
The value inactive determines the processing application is not
continuously receiving data, but should expect data to be supplied to
the designated session ID automatically and process the data upon
receipt. An example of such data is news updates, where the news is
frequently updated but such updates are not continuous. In an
inactive state the processing application should expect to reserve
the session ID and not release it even upon the termination of a data
stream. An inactive state must be locally terminated in the same
manners defined for the active state.
Cheney Informational [Page 15]
Internet-Draft Application Layer Security Solution April 2010
In an inactive state a network session can be terminated remotely and
remain open locally so as to conserve network resources of the remote
party that can be recycled and open a new connection only when it is
ready to transmit data. It should be noted that a remote source
cannot retain a session ID if the session is remotely terminated.
This suggests that all actively running processing applications will
receive the data for processing and will process that data if so
capable. Multi-application processing of a single communication can
be regulated through definitions supplied to the persistence layer
and by denial from applications already assigned a session ID.
6.3 Persistence Layer of the Network Application Model
The persistence layer provides a means for a processed communication
to be remembered for future communication sessions. There is no
formal definition for data supplied in this layer as the data may be
custom to the responding entity of the communication. The contents
of this layer must begin with the character sequence "]persistence["
and end with "]/persistence[" to prevent the custom contents of this
layer from conflicting with the syntax of the Network Application
Model. A value is required for this layer with the default value
being "none".
Since it is the responding entity that determines the persistence
value the originating value must always be "none". Applications
should provide an option to allow users to disable persistence for a
particular responding entity and/or all responding entities of a
given application protocol. An example of data supplied in this
layer would be a web cookie that contains data of user setting
details. Passwords and personally identifiable information should
never be supplied as part of a value in this layer unless that data
is first hashed by a hash algorithm and not identified as a password
or other authentication details. If this layer does not contain a
value or the starting character sequence or the ending character
sequence then the data must be considered corrupt as all three parts
are required. The value supplied in the persistence layer must be
processed prior to interpretation of the next layer.
6.4 Address Layer of the Network Application Model
The address layer defines a globally unique address of the requested
resource. The syntax for this value in a global space must follow
the syntax requirements of URI, RFC 3896, or follow the syntax
requirements of IRI, RFC 3897. The syntax for this value in a local
space must follow the File URI/IRI scheme. This value must be
processed prior to interpretation of the next layer. The strictest
conformance to the syntax requirements of the prior specified
definitions must be adhered to in order to prevent code injection to
a URI/IRI string or the hiding of such through encoded character
sequences. Since strict conformance to syntax is required for safer
Cheney Informational [Page 16]
Internet-Draft Application Layer Security Solution April 2010
interoperation violations upon those syntax definitions must result
in corruption and fail to process. Absolute address values must
always be supplied in the global space as relative address values
cannot be resolved individually.
For secure operation a proprietary syntax may exist in a private
network application environment. A private environment implies a
proprietary protocol and software specifically written to process
that protocol specifically at all points. That implies a proprietary
processing application at every user and every processing server
interface on the network and access to the specific protocol does not
exist outside the proprietary software.
6.5 Type Layer of the Network Application Model
The type layer defines the media type of the resource and the
encoding scheme representing the character encoding of the data. The
syntax for this layer would be a mime major type separated only by a
forward slash, "/", from a mime subtype. The mime type and encoding
scheme are separated only by a semicolon character, ";". All alpha
character data in the layer must be lowercase and spaces must not
exist. All hyphens in the character encoding value must be removed.
Malformed data in this layer should fail processing and result in a
failed data request. This layer must be processed before
interpretation of the next layer.
An example:
application/xhtml+xml;iso88597
6.6 Data Layer of the Network Application Model
The data layer contains the human consumable content and/or data
structure. Formats that would exist in this layer are the contents
of web pages, XML documents, JSON documents, plain text,
spreadsheets, and any other data that humans would read. The
contents of this layer must first begin with "]dataLayer[" and
terminate with "]/dataLayer[". Those two character sequences are
necessary to alert processing applications exactly where the contents
of the data layer begin and end before continued processing of the
Network Application Model. This encapsulation is necessary so that
syntax conventions defined for the Network Application Model are not
in conflict with similar syntax conventions expressed in the contents
of the data layer.
This layer must be processed according to the definitions supplied in
the type layer after consideration for the layer's start and end
character sequences specified in the prior paragraph. If the type
layer specifies a media type that is incompatible with the contents
of the data layer then processing must fail. If the type layer
specifies a media type that matches the intended processing for the
content of the data layer, but the contents of the data layer are
incompatible with the protocol specified in the protocol layer then
processing must fail. This type convention is necessary to prevent
Cheney Informational [Page 17]
Internet-Draft Application Layer Security Solution April 2010
data from appearing in one form and executing in a different form
unknown to the user. If the contents of this layer do not contain
the start character sequence, some amount of character data, or an
end character sequence the data must be presumed corrupt and must
fail. This layer must be processed prior to processing of the next
layer.
6.7 Audio/Visual Layer of the Network Application Model
The audio/visual layer contains assisting formatting instructions for
the data comprised in the data layer in accordance with instructions
defined in header data or structured meta-data conventions resident
in the data layer. This layer commonly represents a convention of
presentation. Another name was chosen to remove ambiguity between
this content and the presentation layer of the OSI model. This layer
also represents more than mere presentation as it can accept
reference to audio signals for closed captioning and other
accessibility benefits.
The syntax for this layer must be addresses of the required assisting
files. The addresses can be relative addresses to the information
contained in the address layer and may be formatted as either a URI
or IRI. The most strict syntax conformance to the definitions
supplied in RFC 3986 for URI or RFC 3987 for IRI must be adhered to
in order to prevent code injection on an address string or a hidden
injection through encoded character sequences. Any address that
cannot be resolved must be ignored so that corruption to information
in this layer degrades gracefully without rejection to processing of
the data. Each address must be separated by a single paragraph
separator character (U+2029). If the data is not assisted by visual
or audio processing instructions then this layer must be supplied a
value of "none".
7.0 Malicious Files and Media
Malicious files can be sent to users in email or downloaded by users
across the web. Malicious files can come in absolutely any form so
long as the executing software is able to perform the malicious
intent of the file's creator.
Files can be supplied with a naming convention that masks the named
file extension upon the file. A file extension is period separated
group of alpha-numeric characters at the end of a file name. In
Windows operating systems the extension is commonly three characters
long, but can be more. In a Linux/Unix a file extension is never
required if the user directly tells an application to execute a file.
File extensions typically identify how a file is supposed to be
executed by a consuming application, of which application should
execute the file. This is problematic since an operating system can
be configured to visibly hide file extensions or a file can be
executed in a manner unexpected by the consuming user.
Cheney Informational [Page 18]
Internet-Draft Application Layer Security Solution April 2010
Files, especially media and script files from the web, can be
supplied to the user as fragments of an attack. A fragmentation
attack occurs where each of the participating files is entirely
benign on its own, but when used with other files or data becomes a
malicious piece of code executing without the victim's wishes.
7.1 Solution to Malicious Files
The only solution to this problem is for every file sent to be sent
with a mime type identifier. The mime type describes exactly the
type of media. Applications must recognize files by their mime type
and not by any other characteristic, such as file extensions. The
files must be executed in accordance with their noted mime type only
and all supplied client side scripting must be processed as string
literal data only. If a file cannot be execute according to its mime
type then it is corrupt and must not be processed by any other means.
When a file is marked as corrupt the application may notify the user
or may request the file again, but the application must not notify
the distant end of the corruption since there is no expectation for
an application to process such a communication. Either the
requesting application or the responding application may drop or
block the network connection upon an unspecified number of repeat
requests.
7.2 Uniformly Encapsulating the Mime Type
The mime type must be delivered in a uniform manner so that
applications know exact what to expect and where to expect such a
description without malicious intervention. If such a uniform manner
deviates from the standard syntax or is absent the file cannot be
associated with a mime type that is uniformly described and must
therefore be presumed corrupt. It is the responsibility of the
application sending a file across a network interface that the
uniform encapsulation is present and well formed. The syntax for
such an encapsulation is as follows:
1. A start character sequence of a greater than character, a pound
character, and a paragraph separator character (U+2029).
2. A right square bracket, the mime type in conformance to the naming
methods provided by the Internet Assigned Naming Authority (IANA),
a left square bracket, and a paragraph separator character
(U+2029).
3. The actual file data.
4. An end character sequence of a paragraph separator character
(U+2029), a pound character, and a less than character.
Example:
>#
]image/jpeg[
compiled binary data
#<
Cheney Informational [Page 19]
Internet-Draft Application Layer Security Solution April 2010
8.0 Stored Addressable Data
Stored addressable data is an organized or listed data of network
addresses or other network identifiers. Stored addressable data may
include web browser bookmarks, web browser history, email contact
list, IRC server list, and any other list of addressable contents for
networked communication. Simple, predictable, and unauthorized
access to stored addressable data allows self replicating malicious
software to spread across a network without limit if there nothing
specifically blocking such traffic. This is primarily of concern to
a specific type of malicious software referred to as 'worms'. Worms
commonly spread through email by accessing an email contact list
found as resident data in the executing email software, but can
easily thread through other means if available. Three of the top ten
malicious code families introduced in 2009 were worms (Symantec
Corporation, 2010). If stored addressable data is not available
worms cannot spread, because there must exist some method available
to traverse a network that is open and directions on where to
traverse upon that open means.
Stored addressable data must be stored in an encrypted form and must
not be decrypted until the data is requested. When the information
is decrypted the decrypted data must be stored in volatile memory
space only. This means an email client, for example, must not open
or decrypt a user's email contact list until the contact list is
requested by that user even though the email client application may
already be executing. When the user has finished using the
addressable data list the list should be closed and destroyed from
memory if there are no changes to the list or encrypted and saved.
The decrypted data must be saved in volatile memory only.
To ensure such lists are separated from the consuming application
such lists must not be affiliated with the same kernel process as the
consuming application, but should be a separate subordinate process.
Subordination is important, because if the processing application
closes unexpectedly then the stored addressable data also crashes.
9.0 Malicious Security Problems not solved by this proposal
9.1 Security is Not Privacy
A common error in security analysis, by people not specifically
experienced in a security profession, is the equivocation of privacy
to security. These two values are inherently related, but are not
the same, and each has problems separate from the other. A primary
principle of security is confidentiality. Confidentiality is the
means of a system or a system's manager to prevent unauthorized
access. Confidentiality is also the prior established and regulated
means of information disclosure, where that disclosure is in
accordance to defined internal policies and procedures and in
accordance with external laws and regulations. Confidentially is not
a classification means and is not a method of integrity. If a
Cheney Informational [Page 20]
Internet-Draft Application Layer Security Solution April 2010
communication or data is not deemed confidential then disclosure is
unlimited. Since confidentiality is not a method of integrity there
is no way to preserve the accuracy of data when that data is
available in an unlimited capacity.
This means that privacy is not security. Privacy is a personal limit
upon disclosure of any information to anybody where confidentiality
is not established. In other words, when security is not available,
privacy is all a person or resource has. Since privacy is not
security there is no limit or barrier to a person's freedom to
violate privacy. The violation of privacy by the owner of that
privacy is commonly referred to as self disclosure. In a vacuum
where information exists entirely without cost to other information
this is not a problem. In this narrow circumstance abandoning
privacy impacts little or no harm.
Information rarely exists in a vacuum. When privacy is abandoned the
data conveyed may have use unknown to the disclosing party.
Unintended uses upon disclosed information may result in means to
violate security upon associated data or resources that are secured.
Even though privacy is not security and is not limited in the manner
that security implies it may allow a means to interrupt security
elsewhere.
This paper makes no attempt to solve problems associated with privacy
violations.
9.2 Privacy Disclosure
This proposal will not keep users from disclosing private data.
Users, for example, should not disclose their home address and
details when residents will be off the property for any extended
duration. Disclosure of private data is an administrative failure.
This example is often referred to as 'over sharing' and may result in
higher insurance premiums (Orlowski, 2010). There is no solution for
individuals who disclose their own private data. When a business or
group entity discloses private data of supporting users those users
are obligated to seek administrative and financial recourse.
9.3 Inside Attacker
An inside attacker is a person or group of persons who are members of
an organization and seek to harm that organization, such as an
employee launching an attack against the employer's computer network.
Such problems can only be solved through proper use of various
administrative processes that are both automated and human managed.
9.4 Social Engineering
This proposal operates on the 7th layer of the OSI model. It does
not operate on the proverbial 8th layer, the user layer. Social
Cheney Informational [Page 21]
Internet-Draft Application Layer Security Solution April 2010
engineering is the manipulation of people to achieve a malicious
intent or circumvent a security procedure. The only solution to
prevent social engineering and phishing attacks is user training and
adherence to security policies or common security best practices.
9.5 Code Injection
This proposal does not directly address code injection, however the
suggestions of this paper concerning code and data separation may
significantly impact the propensity of injection based attacks. Data
supplied through a network interface must always be scanned by a
processing application to ensure syntax characters are not present
and not present in an encoded form. In such a case that syntax
characters are harmful to the processing application or consuming
storage medium the application must escape, transform, or remove
those characters until no harm is present to either consuming
applications or application processing upon storage mediums. Code
injection implies an intentional and malicious violation of the
separation of data from programmatic code stated earlier. In 2009
60% of identities exposed were the result of targeted hacking attacks
that primarily used code injection attack methods (Symantec
Corporation, 2010).
9.6 Cross-Site Request Forgery
Cross-site request forgery (CSRF) is where data, anonymously
transmitted as a HTTP GET string in the form of a URI to a consuming
web server application, is processed by a web server allowing a third
party to appear as a user who recently authenticated their session
and kept their session open. Such an attack represents two failures
in security and potentially a bad practice. One failure is
authentication at the application layer only, but that authentication
does not take into account network data from any other layer of the
OSI model. The result is that the application cannot tell where on a
network, or the Internet, a session originated and so any other
person able to access that application in a like manner can appear to
be somebody known to a processing application. The second failure is
the processing of an anonymously supplied string into a session
response without verification. All data supplied anonymously to a
server with regard to session activity must not be processed from a
protocol that is not encrypted unless a challenge/response mechanism
is prompted to force the engaging party through an authentication
process. In other words all data relative to an application session
must first be transmitted through an encrypted means only and the
application must validate the encryption against at least two layers
in the OSI model for future challenge response for the remaining
active state of the application session. The probability of this
attack is significantly reduced through incorporation of automatic
session timeouts set to a short idle duration.
Cheney Informational [Page 22]
Internet-Draft Application Layer Security Solution April 2010
9.7 Passwords in the Clear
This proposal will not keep users from sending authentication data as
plain text over the wire. The only solution for such a problem is to
prevent access to any protocol that processes plain text data for
authentication.
9.8 Password Guessing
This proposal does not address password guessing. A month prior to
this writing a Swiss security researcher discovered that a brute
force mechanism for password guessing using a rainbow table
configured for faster response from a solid state hard disk could
crack a 14 character password, even with special characters and
numbers and capitalization variation, in roughly 6-8 seconds (Leyden,
2010). Password management is a function of proper application
design. Do not store hashed passwords in a predictable location and
ensure there are limitations upon access to that data, such as
compiling the hash values to prevent access to the stored data from
unauthorized tools.
10.0 Summary
In summary there exists a massive security epidemic associated with
networked communications and the majority of that problem can be
isolated to application processing of data received from a network
interface. The security problem is represented by three problems
each with their own solution.
1. The first problem is client-side scripting. This problem can be
solved by applying a strict separation between static data and
programmatic code. If the separation is violated the data must
not be processed. In order for the solution to exist there must
be an alternative condition to replace the problematic client-side
scripting. The alternative condition is a layered application
model to allow protocol interchange to a single session ID.
2. The second problem is malicious software passed across a network.
This problem can be solved, in combination with the prior step, by
forcing a mime type identifier onto each data file or transferred
programmatic code. The transferred file must be identified by and
executed in accordance with that mime type identification only.
If such execution fails then the file or programmatic code must be
considered corrupt.
3. The third problem is propagation of unauthorized software across a
network interface. This problem can be solved by eliminating
unauthorized access to data that identifies a list of network
locations.
This paper takes the position that at the time of this writing no
solution to application layer security solution is in public
circulation. This solution provided by this paper may not be the
most correct solution, however if there exists no other solution the
Cheney Informational [Page 23]
Internet-Draft Application Layer Security Solution April 2010
solution provided herein then becomes the most correct solution. If
the solution provided herein is thus the most correct solution then
the solution must be supported or adoption or those of dissenting
positions must concede security is either irrelevant or not of value.
10.1 Persons at Risk
The solution proposed by this paper expects to solve and eliminate a
significant majority of security problems associated with networking
and the Internet. This paper also provides a means of organization
by which technologies and standards may be organized against. This
paper does not, however, make any attempt to solve the human factor.
Persons lacking education of basic security awareness put themselves
at risk for exploitation or manipulation. In this regard the problem
is not a technology problem and a technology solution may be at best
impractical and at worst harmful or violating. It is not reasonable
to expect privacy to be preserved if a technology means is provided
to solve a problem of people's abuse of their security through
privacy disclosure.
11.0 Sources
Berners-Lee, T., Fielding, R., & Masinter, L. (2005, January).
Uniform Resource Identifer (URI): Generic Syntax. Retrieved January
1, 2010, from Internet Engineering Task Force:
http://www.ietf.org/rfc/rfc3986.txt
Braden, R. (1989, October). Requirements for Internet Hosts --
Communication Layers. Retrieved April 6, 2010, from Internet
Engineering Task Force: http://www.ietf.org/rfc/rfc1122.txt
Bradley, R., & Byrd, T. (2007, January). Information technology
architecture as a competitive advantage-yielding resource: a
theoretical perspective. Retrieved April 22, 2010, from Association
for Computing Machinery:
http://portal.acm.org/citation.cfm?id=1359765
Cerf, V., Dalal, Y., & Sunshine, C. (1974, December). SPECIFICATION
OF INTERNET TRANSMISSION CONTROL PROGRAM. Retrieved April 6, 2010,
from Internet Engineering Task Force:
http://www.ietf.org/rfc/rfc675.txt
Duerst, M., & Suignard, M. (2005, January). Internationalized
Resource Identifiers (IRIs). Retrieved January 1, 2010, from Internet
Engineering Task Force: http://www.ietf.org/rfc/rfc3987.txt
Gordeychik, S., Grossman, J., Khera, M., Lantinga, M., Murray, C.,
Wysopal, C., et al. (2010, January 10). Web Application Security
Statistics. Retrieved April 23, 2010, from The Web Application
Security Consortium:
http://projects.webappsec.org/Web-Application-Security-Statistics
Cheney Informational [Page 24]
Internet-Draft Application Layer Security Solution April 2010
Hickson, I. (2010, April 20). HTML 5. Retrieved April 23, 2010, from
World Wide Web Consortium: http://dev.w3.org/html5/spec/Overview.html
Howe, W. (2010, March 24). A Brief History of the Internet. Retrieved
April 23, 2010, from Walt Howe's Internet Learning Center:
http://www.walthowe.com/navnet/history.html
James, J. (2008, August 27). HTML 5 Editor Ian Hickson discusses
features, pain points, adoption rate, and more. Retrieved April 22,
2010, from TechRepublic:
http://blogs.techrepublic.com.com/programming-and-development/?p=718
Kostelnick, C. (1998, November). EJ581313 - Conflicting Standards for
Designing Data Displays: Following, Flouting, and Reconciling Them.
Retrieved April 22, 2010, from Education Resources Information
Center:
http://www.eric.ed.gov/ERICWebPortal/custom/portlets/recordDetails/
detailmini.jsp?_nfpb=true&_&ERICExtSearch_SearchValue_0=
EJ581313&ERICExtSearch_SearchType_0=no&accno=EJ581313
Leyden, J. (2010, March 12). SSD tools crack passwords 100 times
faster. Retrieved April 23, 2010, from The Register:
http://www.theregister.co.uk/2010/03/12/password_cracking_on_crack/
Orlowski, A. (2010, February 22). Web2.0rhea means 'higher insurance
premiums'. Retrieved April 23, 2010, from The Register:
http://www.theregister.co.uk/2010/02/22/web20rrhea_insurance/
Severance, C. (1998, January). Conflict and Consensus: The Role of
Standards. Retrieved April 22, 2010, from Dr. Chuck's Interactive
Personal Portfolio:
http://www.dr-chuck.com/dr-chuck/papers/columns/r1138.pdf
Symantec Corporation. (2010). Symantec Global Internet Security
Threat Report - Trends 2009. Mountain View: Symantec Corporation.
Wasserman, M. (2004, October). RFC3934 - Updates to RFC 2418
Regarding the Management of IETF. Retrieved April 22, 2010, from
Internet Engineering Task Force: http://www.ietf.org/rfc/rfc3987.txt
World Wide Web Consortium. (n.d.). About W3C Standards. Retrieved
April 22, 2010, from World Wide Web Consortium:
http://www.w3.org/standards/about.html
Security
This document is strictly concerned with solving security problems.
Acknowledgements
This work would not be possible without opportunities and training
provided by my dual employers, Travelocity (Sabre) and US Army.
Cheney Informational [Page 25]
Internet-Draft Application Layer Security Solution April 2010
Author's Address
Austin Cheney
User Interface Technologist, Travelocity
3150 Sabre Drive
Southlake, TX 76092
PHONE: (682) 605-1000
EMAIL: austin.cheney@us.army.mil
Copyright (c) 2010 IETF Trust and the persons identified as the document
authors. All rights reserved.
Expires October 22, 2010
Cheney Informational [Page 26]