<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Micheal+w+s+mcnamee</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Micheal+w+s+mcnamee"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Micheal_w_s_mcnamee"/>
		<updated>2026-05-11T11:50:43Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Clickjacking_Cheat_Sheet&amp;diff=139624</id>
		<title>Clickjacking Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Clickjacking_Cheat_Sheet&amp;diff=139624"/>
				<updated>2012-11-16T16:12:29Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= DRAFT CHEAT SHEET - WORK IN PROGRESS =&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This article is focused on providing developer guidance on Clickjack/UI Redress attack prevention. &lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/index.php/Clickjacking https://www.owasp.org/index.php/Clickjacking]&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Glossary&amp;diff=139592</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Glossary&amp;diff=139592"/>
				<updated>2012-11-16T08:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: /&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{compactTOC}}&lt;br /&gt;
&lt;br /&gt;
{{SecureSoftware}}&lt;br /&gt;
&lt;br /&gt;
==0–9==&lt;br /&gt;
===3DES===&lt;br /&gt;
See also: [[#Triple DES|Triple DES]]&lt;br /&gt;
==A==&lt;br /&gt;
===Access Control List===&lt;br /&gt;
A list of credentials attached to a resource indicating whether or not the credentials have access to the resource.&lt;br /&gt;
===ACL===&lt;br /&gt;
Access Control List&lt;br /&gt;
===Active attack===&lt;br /&gt;
Any network-based attack other than simple eavesdropping — i.e., a passive attack).&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
A fast general-purpose block cipher standardized by NIST (the National Institute of Standards and Technology). The AES selection process was a multi-year competition, where Rijndael was the winning cipher.&lt;br /&gt;
===AES===&lt;br /&gt;
See also: [[#Advanced Encryption Standard|Advanced Encryption Standard]]&lt;br /&gt;
===Anti-debugger===&lt;br /&gt;
Referring to technology that detects or thwarts the use of a debugger on a piece of software.&lt;br /&gt;
===Anti-tampering===&lt;br /&gt;
Referring to technology that attempts to thwart the reverse engineering and patching of a piece of software in binary format.&lt;br /&gt;
===Architectural security assessment===&lt;br /&gt;
See also: [[#Threat model|Threat Model]]&lt;br /&gt;
&lt;br /&gt;
===ASN.1===&lt;br /&gt;
Abstract Syntax Notation is a language for representing data objects. It is popular to use this in specifying cryptographic protocols, usually using DER (Distinguished Encoding Rules), which allows the data layout to be unambiguously specified.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Distinguished Encoding Rules|Distinguished Encoding Rules]].&lt;br /&gt;
===Asymmetric cryptography===&lt;br /&gt;
Cryptography involving public keys, as opposed to cryptography making use of shared secrets.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Symmetric cryptography|Symmetric cryptography]].&lt;br /&gt;
===Audit===&lt;br /&gt;
In the context of security, a review of a system in order to validate the security of the system. Generally, this either refers to code auditing or reviewing audit logs.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Audit log|Audit log]], [[#Code auditing|Code auditing]].&lt;br /&gt;
===Audit log===&lt;br /&gt;
Records that are kept for the purpose of later verifying that the security properties of a system have remained intact.&lt;br /&gt;
===Authenticate-and-encrypt===&lt;br /&gt;
When using a cipher to encrypt and a MAC to provide message integrity, this paradigm specifies that one authenticates the plaintext and encrypts the plaintext, possibly in parallel. This is not secure in the general case.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Authenticate-then-encrypt|Authenticate-then-encrypt]], [[#Encrypt-then-authenticate|Encrypt-then-authenticate]].&lt;br /&gt;
&lt;br /&gt;
===Authenticate-then-encrypt===&lt;br /&gt;
When using a cipher to encrypt and a MAC to provide message integrity, this paradigm specifies that one authenticates the plaintext and then encrypts the plaintext concatenated with the MAC tag. This is not secure in the general case, but usually works well in practice.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Authenticate-and-encrypt|Authenticate-and-encrypt]], [[#Encrypt-then-authenticate|Encrypt-then-authenticate]].&lt;br /&gt;
===Authentication===&lt;br /&gt;
The process of verifying identity, ownership, and/or authorization.&lt;br /&gt;
==B==&lt;br /&gt;
===Backdoor===&lt;br /&gt;
Malicious code inserted into a program for the purposes of providing the author covert access to machines running the program.&lt;br /&gt;
===Base 64===&lt;br /&gt;
A method for encoding binary data into printable ASCII strings. Every byte of output maps to six bits of input (minus possible padding bytes).&lt;br /&gt;
&lt;br /&gt;
===Big endian===&lt;br /&gt;
Refers to machines representing words most significant byte first. While x86 machines do not use big endian byte ordering (instead using little endian), the PowerPC and SPARC architectures do. This is also network byte order.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Little endian|Little endian]].&lt;br /&gt;
===Birthday attack===&lt;br /&gt;
Take a function f() that seems to map an input to a random output of some fixed size (a pseudo-random function or PRF). A birthday attack is simply selecting random inputs for f() and checking to see if any previous values gave the same output. Statistically, if the output size is S bits, then one can find a collision in 2S/2 operations, on average.&lt;br /&gt;
===Bit-flipping attack===&lt;br /&gt;
In a stream cipher, flipping a bit in the ciphertext flips the corresponding bit in the plaintext. If using a message authentication code (MAC), such attacks are not practical.&lt;br /&gt;
===Blacklist=== &lt;br /&gt;
When performing input validation, the set of items that — if matched — result in the input being considered invalid. If no invalid items are found, the result is valid.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Whitelist|Whitelist]].&lt;br /&gt;
&lt;br /&gt;
===Blinding===&lt;br /&gt;
A technique used to thwart timing attacks.&lt;br /&gt;
===Block cipher===&lt;br /&gt;
An encryption algorithm that maps inputs of size n to outputs of size n (n is called the block size). Data that is not a valid block size must somehow be padded (generally by using an encryption mode). The same input always produces the same output.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Stream cipher|Stream cipher]].&lt;br /&gt;
===Blowfish===&lt;br /&gt;
A block cipher with 64-bit blocks and variable length keys, created by Bruce Schneier. This cipher is infamous for having slow key-setup times.&lt;br /&gt;
===Brute-force attack===&lt;br /&gt;
An attack on an encryption algorithm where the encryption key for a ciphertext is determined by trying to decrypt with every key until valid plaintext is obtained.&lt;br /&gt;
===Buffer overflow===&lt;br /&gt;
A buffer overflow is when you can put more data into a memory location than is allocated to hold that data. Languages like C and C++ that do no built-in bounds checking are susceptible to such problems. These problems are often security-critical.&lt;br /&gt;
==C==&lt;br /&gt;
===CA===&lt;br /&gt;
See Certification Authority.&lt;br /&gt;
===Canary===&lt;br /&gt;
A piece of data, the absence of which indicates a violation of a security policy. Several tools use a canary for preventing certain stack-smashing buffer overflow attacks.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Buffer overflow|Buffer overflow]], [[#Stack smashing|Stack smashing]].&lt;br /&gt;
===Capture-replay attacks===&lt;br /&gt;
When an attacker can capture data off the wire and replay it later without the bogus data being detected as bogus.&lt;br /&gt;
===Carter-Wegmen Counter (data encryption mode)===&lt;br /&gt;
A parallelizable and patent-free high-level encryption mode that provides both encryption and built-in message integrity.&lt;br /&gt;
&lt;br /&gt;
===CAST5===&lt;br /&gt;
A block cipher with 64-bit blocks and key sizes up to 128 bits. It is patent- free, and generally considered sound, but modern algorithms with larger block sizes are generally preferred (e.g., AES). &lt;br /&gt;
&lt;br /&gt;
See also: [[#AES|AES]].&lt;br /&gt;
===CBC Mode===&lt;br /&gt;
See also: [[#Cipher-Block Chaining mode|Cipher-Block Chaining mode]].&lt;br /&gt;
&lt;br /&gt;
===CBC-MAC===&lt;br /&gt;
A simple construction for turning a block cipher into a message authentication code. It only is secure when all messages MAC’d with a single key are the same size. However, there are several variants that thwart this problem, the most important being OMAC. &lt;br /&gt;
&lt;br /&gt;
See also: [[#OMAC|OMAC]].&lt;br /&gt;
===CCM mode===&lt;br /&gt;
See also: [[#Counter mode with CBC-MAC (CCM)|Counter mode with CBC-MAC (CCM)]].&lt;br /&gt;
&lt;br /&gt;
===Certificate===&lt;br /&gt;
A data object that binds information about a person or some other entity to a public key. The binding is generally done using a digital signature from a trusted third party (a certification authority).&lt;br /&gt;
===Certificate Revocation List===&lt;br /&gt;
A list published by a certification authority indicating which issued certificates should be considered invalid.&lt;br /&gt;
===Certificate Signing Request===&lt;br /&gt;
Data about an entity given to a certification authority. The authority will package the data into a certificate and sign the certificate if the data in the signing request is validated.&lt;br /&gt;
===Certification Authority===&lt;br /&gt;
An entity that manages digital certificates — i.e., issues and revokes. Verisign and InstantSSL are two well known CAs.&lt;br /&gt;
===CFB mode===&lt;br /&gt;
See also: [[#Cipher Feedback mode|Cipher Feedback mode]].&lt;br /&gt;
===Chain responder===&lt;br /&gt;
An OCSP responder that relays the results of querying another OCSP responder.&lt;br /&gt;
&lt;br /&gt;
See also: [[#OCSP|OCSP]].&lt;br /&gt;
&lt;br /&gt;
===Choke point===&lt;br /&gt;
In computer security, a place in a system where input is routed for the purposes of performing data validation. The implication is that there are few such places in a system and that all data must pass through one or more of the choke points. The idea is that funneling input through a small number of choke points makes it easier to ensure that input is properly validated. One potential concern is that poorly chosen choke points may not have enough information to perform input validation that is as accurate as possible.&lt;br /&gt;
===chroot===&lt;br /&gt;
A UNIX system call that sets the root directory for a process to any arbitrary directory. The idea is compartmentalization: Even if a process is compromised, it should not be able to see interesting parts of the file system beyond its own little world. There are some instances where chroot &amp;amp;quot;jails&amp;amp;quot; can be circumvented; it can be difficult to build proper operating environments to make chroot work well.&lt;br /&gt;
===Cipher-Block Chaining mode===&lt;br /&gt;
A block cipher mode that provides secrecy but not message integrity. Messages encrypted with this mode should have random initialization vectors.&lt;br /&gt;
===Cipher Feedback mode===&lt;br /&gt;
A mode that turns a block cipher into a stream cipher. This mode is safe only when used in particular configurations. Generally, CTR mode and OFB mode are used instead since both have better security bounds.&lt;br /&gt;
===Ciphertext===&lt;br /&gt;
The result of encrypting a message.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Plaintext|Plaintext]].&lt;br /&gt;
===Ciphertext stealing mode===&lt;br /&gt;
A block cipher mode of operation that is similar to CBC mode except that the final block is processed in such a way that the output is always the same length as the input. That is, this mode is similar to CBC mode but does not require padding.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cipher-Block Chaining mode|Cipher-Block Chaining mode]], [[#Padding|Padding]].&lt;br /&gt;
&lt;br /&gt;
===CLASP===&lt;br /&gt;
See also: [[#Comprehesive, Lightweight Application Security Process|Comprehesive, Lightweight Application Security Process]]&lt;br /&gt;
&lt;br /&gt;
===Code auditing===&lt;br /&gt;
Reviewing computer software for security problems.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Audit|Audit]].&lt;br /&gt;
===Code signing===&lt;br /&gt;
Signing executable code to establish that it comes from a trustworthy vendor. The signature must be validated using a trusted third party in order to establish identity.&lt;br /&gt;
===Compartmentalization===&lt;br /&gt;
Separating a system into parts with distinct boundaries, using simple, well- defined interfaces. The basic idea is that of containment — i.e., if one part is compromised, perhaps the extent of the damage can be limited.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Jail|Jail]], [[#Chroot|Chroot]].&lt;br /&gt;
===Comprehesive, Lightweight Application Security Process===&lt;br /&gt;
An activity-driven, role based set of process components whose core contains formalized best practices for building security into your existing or new-start software development lifecycles in a structured, repeatable, and measurable way.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[:Category:OWASP CLASP Project|OWASP CLASP Project]]&lt;br /&gt;
&lt;br /&gt;
===Context object===&lt;br /&gt;
In a cryptographic library, a data object that holds the intermediate state associated with the cryptographic processing of a piece of data. For example, if incrementally hashing a string, a context object stores the internal state of the hash function necessary to process further data.&lt;br /&gt;
===Counter mode===&lt;br /&gt;
A parallelizable encryption mode that effectively turns a block cipher into a stream cipher. It is a popular component in authenticated encryption schemes due to its optimal security bounds and good performance characteristics.&lt;br /&gt;
===Counter mode with CBC-MAC (CCM)===&lt;br /&gt;
An encryption mode that provides both message secrecy and integrity. It was the first such mode that was not covered by patent.&lt;br /&gt;
&lt;br /&gt;
===CRAM===&lt;br /&gt;
A password-based authentication mechanism using a cryptographic hash function (usually MD5). It does not provide adequate protection against several common threats to password-based authentication systems. HTTP Digest Authentication is a somewhat better alternative; it is replacing CRAM in most places.&lt;br /&gt;
===CRC===&lt;br /&gt;
Cyclic Redundancy Check. A means of determining whether accidental transmission errors have occurred. Such algorithms are not cryptographically secure because attackers can often forge CRC values or even modify data maliciously in such a way that the CRC value does not change. Instead, one should use a strong, keyed message authentication code such as HMAC or OMAC.&lt;br /&gt;
&lt;br /&gt;
See also: [[#HMAC|HMAC]], [[#Message Authentication Code|Message Authentication Code]], [[#OMAC|OMAC]].&lt;br /&gt;
===Critical extensions===&lt;br /&gt;
In an X.509 certificate, those extensions that must be recognized by any software processing the certificate. If a piece of software does not recognize an extension marked as critical, the software must regard the certificate as invalid.&lt;br /&gt;
&lt;br /&gt;
===CRL===&lt;br /&gt;
See also: [[#Certificate Revocation List|Certificate Revocation List]].&lt;br /&gt;
&lt;br /&gt;
===Cross-site request forgery===&lt;br /&gt;
[[CSRF]] is an attack which forces an end user to execute unwanted actions on a web application in which he/she is currently authenticated. With little help of social engineering (like sending a link via email/chat), an attacker may force the users of a web application to execute actions of the attackers choosing. A successful CSRF exploit can compromise end user data and operation in case of normal user. If the targeted end user is the administrator account, this can compromise the entire web application.&lt;br /&gt;
===Cross-site scripting===&lt;br /&gt;
A class of problems resulting from insufficient input validation where one user can add content to a web site that can be malicious when viewed by other users to the web site. For example, one might post to a message board that accepts arbitrary HTML and include a malicious code item.&lt;br /&gt;
===Cryptanalysis===&lt;br /&gt;
The science of breaking cryptographic algorithms.&lt;br /&gt;
===Cryptographic hash function===&lt;br /&gt;
A function that takes an input string of arbitrary length and produces a fixed- size output — where it is unfeasible to find two inputs that map to the same output, and it is unfeasible to learn anything about the input from the output.&lt;br /&gt;
===Cryptographic randomness===&lt;br /&gt;
Data produced by a cryptographic pseudo-random number generator. The probability of figuring out the internal state of the generator is related to the strength of the underlying cryptography — i.e., assuming the generator is seeded with enough entropy.&lt;br /&gt;
===Cryptography===&lt;br /&gt;
The science of providing secrecy, integrity, and non-repudiation for data.&lt;br /&gt;
===CSR===&lt;br /&gt;
See also: [[#Certificate Signing Request|Certificate Signing Request]].&lt;br /&gt;
===CSS===&lt;br /&gt;
Cross-site scripting. Generally, however, this is abbreviated to XSS in order to avoid confusion with cascading style sheets.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cross-site scripting|Cross-site scripting]].&lt;br /&gt;
===CTR mode===&lt;br /&gt;
See also: [[#Counter mode|Counter mode]].&lt;br /&gt;
===CWC mode===&lt;br /&gt;
See also: [[#Carter-Wegmen Counter (data encryption mode)|Carter Wegmen + Counter mode]].&lt;br /&gt;
&lt;br /&gt;
==D==&lt;br /&gt;
===DACL===&lt;br /&gt;
Discretionary Access Control List. In a Windows ACL, a list that determines access rights to an object.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Access Control List|Access Control List]].&lt;br /&gt;
&lt;br /&gt;
===Davies-Meyer===&lt;br /&gt;
An algorithm for turning a block cipher into a cryptographic one-way hash function.&lt;br /&gt;
===Default deny===&lt;br /&gt;
A paradigm for access control and input validation where an action must explicitly be allowed. The idea behind this paradigm is that one should limit the possibilities for unexpected behavior by being strict, instead of lenient, with rules.&lt;br /&gt;
===Defense-in-depth===&lt;br /&gt;
A principle for building systems stating that multiple defensive mechanisms at different layers of a system are usually more secure than a single layer of defense. For example, when performing input validation, one might validate user data as it comes in and then also validate it before each use — just in case something was not caught, or the underlying components are linked against a different front end, etc.&lt;br /&gt;
===DEK===&lt;br /&gt;
Data encrypting key.&lt;br /&gt;
===Delta CRLs===&lt;br /&gt;
A variation of Certificate Revocation Lists that allows for incremental updating, as an effort to avoid frequently re-downloading a large amount of unchanged data.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Certificate Revocation List|Certificate Revocation List]].&lt;br /&gt;
===Denial of service attack===&lt;br /&gt;
Any attack that affects the availability of a service. Reliability bugs that cause a service to crash or go into some sort of vegetative state are usually potential denial-of-service problems.&lt;br /&gt;
===DES===&lt;br /&gt;
The Data Encryption Standard. An encryption algorithm standardized by the US Government. The key length is too short, so this algorithm should be considered insecure. The effective key strength is 56 bits; the actual key size is 64 bits — 8 bits are wasted. However, there are variations such as Triple DES and DESX that increase security while also increasing the key size.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Advanced Encryption Standard|Advanced Encryption Standard]], [[#Triple DES|Triple DES]].&lt;br /&gt;
===DESX===&lt;br /&gt;
An extended version of DES that increases the resistance to brute-force attack in a highly efficient way by increasing the key length. The extra key material is mixed into the encryption process, using XORs. This technique does not improve resistance to differential attacks, but such attacks are still generally considered unfeasible against DES.&lt;br /&gt;
&lt;br /&gt;
See also: [[#DES|DES]].&lt;br /&gt;
===Dictionary attack===&lt;br /&gt;
An attack against a cryptographic system, using precomputating values to build a dictionary. For example, in a password system, one might keep a dictionary mapping ciphertext pairs in plaintext form to keys for a single plaintext that frequently occurs. A large enough key space can render this attack useless. In a password system, there are similar dictionary attacks, which are somewhat alleviated by salt. The end result is that the attacker — once he knows the salt — can do a “Crack”-style dictionary attack. Crack-style attacks can be avoided to some degree by making the password verifier computationally expensive to compute. Or select strong random passwords, or do not use a password-based system.&lt;br /&gt;
===Differential cryptanalysis===&lt;br /&gt;
A type of cryptographic attack where an attacker who can select related inputs learns information about the key from comparing the outputs. Modern ciphers of merit are designed in such a way as to thwart such attacks. Also note that such attacks generally require enough chosen plaintexts as to be considered unfeasible, even when there is a cipher that theoretically falls prey to such a problem.&lt;br /&gt;
===Diffie-Hellman key exchange===&lt;br /&gt;
A method for exchanging a secret key over an untrusted medium in such a way as to preserve the secrecy of the key. The two parties both contribute random data that factors into the final shared secret. The fundamental problem with this method is authenticating the party with whom you exchanged keys. The simple Diffie-Hellman protocol does not do that. One must also use some public-key authentication system such as DSA.&lt;br /&gt;
&lt;br /&gt;
See also: [[#DSA|DSA]], [[#Station-to-station protocol|Station-to-station protocol]].&lt;br /&gt;
===Digest size===&lt;br /&gt;
The output size for a hash function.&lt;br /&gt;
===Digital signature===&lt;br /&gt;
Data that proves that a document (or other piece of data) was not modified since being processed by a particular entity. Generally, what this really means is that — if someone ‘signs’ a piece of data — anyone who has the right public key can demonstrated which private key was used to sign the data.&lt;br /&gt;
===Digital Signature Algorithm===&lt;br /&gt;
See also: [[#DSA|DSA]].&lt;br /&gt;
===Distinguished Encoding Rules===&lt;br /&gt;
A set of rules used that describes how to encode ASN.1 data objects unambiguously.&lt;br /&gt;
&lt;br /&gt;
See also: [[#ASN.1|ASN.1]].&lt;br /&gt;
&lt;br /&gt;
===Distinguished Name===&lt;br /&gt;
In an X.509 certificate, a field that uniquely specifies the user or group to which the certificate is bound. Usually, the Distinguished Name will contain a user’s name or User ID, an organizational name, and a country designation. For a server certificate, it will often contain the DNS name of the machine.&lt;br /&gt;
===DN===&lt;br /&gt;
See also: [[#Distinguished Name|Distinguished Name]].&lt;br /&gt;
===DoS===&lt;br /&gt;
Denial of Service.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Denial of service attack|Denial of service attack]].&lt;br /&gt;
===DSA===&lt;br /&gt;
The Digital Signature Algorithm, a public key algorithm dedicated to digital signatures which was standardized by NIST. It is based on the same mathematical principles as Diffie-Hellman.&lt;br /&gt;
==E==&lt;br /&gt;
===Eavesdropping attack===&lt;br /&gt;
Any attack on a data connection where one simply records or views data instead of tampering with the connection.&lt;br /&gt;
===ECB Mode===&lt;br /&gt;
See also: [[#Electronic Code Book mode|Electronic Code Book mode]].&lt;br /&gt;
===ECC===&lt;br /&gt;
See also: [[#Eliptic Curve Cryptography|Eliptic Curve Cryptography]].&lt;br /&gt;
===EGD===&lt;br /&gt;
See also: [[#Entropy Gathering Daemon|Entropy Gathering Daemon]].&lt;br /&gt;
===Electronic Code Book mode===&lt;br /&gt;
An encryption mode for block ciphers that is more or less a direct use of the underlying block cipher. The only difference is that a message is padded out to a multiple of the block length. This mode should not be used under any circumstances.&lt;br /&gt;
===Eliptic Curve Cryptography===&lt;br /&gt;
A type of public key cryptography that — due to smaller key sizes — tends to be more efficient that standard cryptography. The basic algorithms are essentially the same, except that the operations are performed over different mathematical groups (called eliptic curves).&lt;br /&gt;
===EME-OAEP padding===&lt;br /&gt;
A padding scheme for public key cryptography that uses a “random” value generated, using a cryptographic hash function in order to prevent particular types of attacks against RSA.&lt;br /&gt;
&lt;br /&gt;
See also: [[#PKCS #1|PKCS #1 padding]].&lt;br /&gt;
===Encrypt-then-authenticate===&lt;br /&gt;
When using a cipher to encrypt and a MAC to provide message integrity, this paradigm specifies that one encrypts the plaintext, then MACs the ciphertext. This paradigm has theoretically appealing properties and is recommended to use in practice.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Authenticate-and-encrypt|Authenticate-and-encrypt]], [[#Authenticate-then-encrypt|Authenticate-then-encrypt]].&lt;br /&gt;
===Endianess===&lt;br /&gt;
The byte ordering scheme that a machine uses (usually either little endian or big endian).&lt;br /&gt;
&lt;br /&gt;
See also:[[#Big endian|Big endian]], [[#Little endian|Little endian]].&lt;br /&gt;
===Entropy===&lt;br /&gt;
Refers to the inherent unknowability of data to external observers. If a bit is just as likely to be a 1 as a 0 and a user does not know which it is, then the bit contains one bit of entropy.&lt;br /&gt;
===Entropy Gathering Daemon===&lt;br /&gt;
A substitute for /dev/random; a tool used for entropy harvesting.&lt;br /&gt;
===Entropy harvester===&lt;br /&gt;
A piece of software responsible for gathering entropy from a machine and distilling it into small pieces of high entropy data. Often an entropy harvester will produce a seed for a cryptographic pseudo-random number generator.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Entropy|Entropy]], [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
===Ephemeral keying===&lt;br /&gt;
Using one-time public key pairs for session key exchange in order to prevent recovering previous session keys if a private key is compromised. Long-term public key pairs are still used to establish identity.&lt;br /&gt;
===Euclidian algorithm===&lt;br /&gt;
An algorithm that computes the greatest common divisor of any two numbers.&lt;br /&gt;
===Extended Euclidian algorithm===&lt;br /&gt;
An algorithm used to compute the inverse of a number modulo “some other number.”&lt;br /&gt;
==F==&lt;br /&gt;
===Fingerprint===&lt;br /&gt;
The output of a cryptographic hash function.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message digest|Message digest]].&lt;br /&gt;
===FIPS===&lt;br /&gt;
Federal Information Processing Standard; a set of standards from NIST.&lt;br /&gt;
===FIPS-140===&lt;br /&gt;
A standard authored by the U.S. National Institute of Standards and Technology, that details general security requirements for cryptographic software deployed in a government systems (primarily cryptographic providers).&lt;br /&gt;
&lt;br /&gt;
See also: [[#NIST|NIST]], [[#FIPS|FIPS]].&lt;br /&gt;
===Format string attack===&lt;br /&gt;
The C standard library uses specifiers to format output. If an attacker can control the input to such a format string, he can often write to arbitrary memory locations.&lt;br /&gt;
===Forward secrecy===&lt;br /&gt;
Ensuring that the compromise of a secret does not divulge information that could lead to data protected prior to the compromise. In many systems with forward secrecy, it is only provided on a per-session basis, meaning that a key compromise will not affect previous sessions, but would allow an attacker to decrypt previous messages sent as a part of the current session.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Perfect forward secrecy|Perfect forward secrecy]].&lt;br /&gt;
==G==&lt;br /&gt;
==H==&lt;br /&gt;
===Hash function===&lt;br /&gt;
A function that maps a string of arbitrary length to a fixed size value in a deterministic manner. Such a function may or may not have cryptographic applications.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cryptographic hash function|Cryptographic hash function]], [[#Universal hash function|Universal hash function]], [[#One-way hash function|One-way hash function]].&lt;br /&gt;
===Hash function (cryptographic)===&lt;br /&gt;
See also: [[#Cryptographic hash function|Cryptographic hash function]].&lt;br /&gt;
===Hash function (one-way)===&lt;br /&gt;
See also: [[#One-way hash function|One-way hash function]].&lt;br /&gt;
===Hash function (universal)===&lt;br /&gt;
See also: [[#Universal hash function|Universal hash function]].&lt;br /&gt;
===Hash output===&lt;br /&gt;
See also: [[#Hash value|Hash value]].&lt;br /&gt;
===Hash value===&lt;br /&gt;
The output of a hash function.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Fingerprint|Fingerprint]], [[#Message digest|Message digest]].&lt;br /&gt;
===hash127===&lt;br /&gt;
A fast universal hash function from Dan Bernstein.&lt;br /&gt;
===HMAC===&lt;br /&gt;
A well-known algorithm for converting a cryptographic one-way hash function into a message authentication code.&lt;br /&gt;
===Honey Pot===&lt;br /&gt;
A strategy of setting up resources which an attacker believes are real but are infact designed specifically to catch the attacker.&lt;br /&gt;
&lt;br /&gt;
==I==&lt;br /&gt;
===IDEA===&lt;br /&gt;
A block cipher with 128-bit keys and 64-bit blocks popularly used with PGP. It is currently protected by patents.&lt;br /&gt;
===Identity establishment===&lt;br /&gt;
Authentication.&lt;br /&gt;
===IEEE P1363===&lt;br /&gt;
An IEEE standard for eliptic curve cryptography. Implementing the standard requires licensing patents from Certicom.&lt;br /&gt;
===Indirect CRLs===&lt;br /&gt;
A CRL issued by a third party, that can contain certificates from multiple CA’s.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Certificate|Certificate]], [[#Certificate Revocation List|Certificate Revocation List]], [[#Certification Authority|Certification Authority]].&lt;br /&gt;
===Initialization vector===&lt;br /&gt;
A value used to initialize a cryptographic algorithm. Often, the implication is that the value must be random.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Nonce|Nonce]], [[#Salt|Salt]].&lt;br /&gt;
===Input validation===&lt;br /&gt;
The act of determining that data input to a program is sound.&lt;br /&gt;
===Integer overflow===&lt;br /&gt;
When an integer value is too big to be held by its associated data type, the results can often be disastrous. This is often a problem when converting unsigned numbers to signed values.&lt;br /&gt;
===Integrity checking===&lt;br /&gt;
The act of checking whether a message has been modified either maliciously or by accident. Cryptographically strong message integrity algorithms should always be used when integrity is important.&lt;br /&gt;
===Interleaved encryption===&lt;br /&gt;
Processing the encryption of a message as multiple messages, generally treating every nth block as part of a single message.&lt;br /&gt;
===ISO/IEC 17799===&lt;br /&gt;
Provides best practice recommendations on information security management for use by those who are responsible for initiating, implementing or maintaining information security management systems. &lt;br /&gt;
===IV===&lt;br /&gt;
See also: [[#Initialization vector|Initialization vector]].&lt;br /&gt;
&lt;br /&gt;
==J==&lt;br /&gt;
===Jail===&lt;br /&gt;
A restricted execution environment meant to compartmentalize a process, so that — even if it has security problems — it cannot hurt resources which it would not normally have access to use. On FreeBSD, a system call similar to chroot that provides compartmentalization. Unlike chroot, it can also restrict network resources in addition to file system resources.&lt;br /&gt;
&lt;br /&gt;
See also: [[#chroot|chroot]].&lt;br /&gt;
&lt;br /&gt;
==K==&lt;br /&gt;
===Kerberos===&lt;br /&gt;
An authentication protocol that relies solely on symmetric cryptography, as opposed to public key cryptography. It still relies on a trusted third party (an authentication server). While Kerberos is often looked upon as a way to avoid problems with Public Key Infrastructure, it can be difficult to scale Kerberos beyond medium-sized organizations.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]], [[#Trusted third party|Trusted third party]].&lt;br /&gt;
===Key agreement===&lt;br /&gt;
The process of two parties agreeing on a shared secret, where both parties contribute material to the key.&lt;br /&gt;
===Key establishment===&lt;br /&gt;
The process of agreeing on a shared secret, where both parties contribute material to the key.&lt;br /&gt;
===Key exchange===&lt;br /&gt;
The process of two parties agreeing on a shared secret, usually implying that both parties contribute to the key.&lt;br /&gt;
===Key management===&lt;br /&gt;
Mechanisms and process for secure creation, storage, and handling of key material.&lt;br /&gt;
===Key schedule===&lt;br /&gt;
In a block cipher, keys used for individual “rounds” of encryption, derived from the base key in a cipher-dependent manner.&lt;br /&gt;
===Key transport===&lt;br /&gt;
When one party picks a session key and communicates it to a second party.&lt;br /&gt;
===Keystream Output===&lt;br /&gt;
from a stream cipher.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Pseudo-random number generator|Pseudo-random number generator]], [[#Stream cipher|Stream cipher]].&lt;br /&gt;
==L==&lt;br /&gt;
===LDAP===&lt;br /&gt;
Lightweight Directory Access Protocol. A directory protocol commonly used for storing and distributing CRLs.&lt;br /&gt;
===Length extension attack===&lt;br /&gt;
A class of attack on message authentication codes, where a tag can be forged without the key by extending a pre-existing message in a particular way. CBC-MAC in its simplest form has this problem, but variants protect against it (particularly OMAC).&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]], [[#OMAC|OMAC]].&lt;br /&gt;
===LFSR===&lt;br /&gt;
See also: [[#Linear Feedback Shift Register|Linear Feedback Shift Register]].&lt;br /&gt;
&lt;br /&gt;
===Linear cryptanalysis===&lt;br /&gt;
A type of cryptanalytic attack where linear approximations of behavior are used. Modern ciphers of merit are designed in such a way as to thwart such attacks. Also note that such attacks generally require enough chosen plaintexts as to be considered unfeasible — even when there is a cipher that theoretically falls prey to such a problem (such as DES).&lt;br /&gt;
===Linear Feedback Shift Register===&lt;br /&gt;
A non-cryptographic class of pseudo-random number generators, where output is determined by shifting out &amp;amp;quot;output&amp;amp;quot; bits and shifting in &amp;amp;quot;input&amp;amp;quot; bits, where the input bits are a function of the internal state of the register, perhaps combined with new entropy. LFSRs are based on polynomial math, and are not secure in and of themselves; however, they can be put to good use as a component in more secure cryptosystems.&lt;br /&gt;
===Little endian===&lt;br /&gt;
Refers to machines representing words of data least significant byte first, such as the Intel x86.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Big endian|Big endian]].&lt;br /&gt;
==M==&lt;br /&gt;
===MAC===&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]].&lt;br /&gt;
&lt;br /&gt;
===Man-in-the- middle attack===&lt;br /&gt;
An eavesdropping attack where a client’s communication with a server is proxied by an attacker. Generally, the implication is that the client performs a cryptographic key exchange with an entity and fails to authenticate that entity, thus allowing an attacker to look like a valid server.&lt;br /&gt;
===Matyas-Meyer-Oseas===&lt;br /&gt;
A construction for turning a block cipher into a cryptographic one-way hash function.&lt;br /&gt;
===MCF===&lt;br /&gt;
The Modular Crypt Format, a de-facto data format standard for storing password hashes commonly used on UNIX boxes as a replacement for the traditional UNIX crypt() format.&lt;br /&gt;
===MD-strengthening===&lt;br /&gt;
Merkel-Damgard strengthening, a general method for turning a collision- resistant compression function into a collision-resistant hash function by adding padding and an encoded length to the end of the input message. The key point behind MD-strengthening is that no possible input to the underlying hash function can be the tail end of a different input.&lt;br /&gt;
===MD2===&lt;br /&gt;
A cryptographic hash function optimized for 16-bit platforms. It has poor performance characteristics on other platforms and has a weak internal structure.&lt;br /&gt;
===MD4===&lt;br /&gt;
A cryptographic hash function that is known to be broken and should not be used under any circumstances.&lt;br /&gt;
===MD5===&lt;br /&gt;
A popular and fast cryptographic hash function that outputs 128-bit message digests. Its internal structure is known to be weak and should be avoided if at all possible.&lt;br /&gt;
===MD5-MCF===&lt;br /&gt;
A way of using MD5 to store password authentication information, using the modular crypt format.&lt;br /&gt;
&lt;br /&gt;
See also: [[#MCF|MCF]], [[#MD5|MD5]].&lt;br /&gt;
===MDC2===&lt;br /&gt;
A construction for turning a block cipher into a cryptographic hash function, where the output length is twice the block size of the cipher.&lt;br /&gt;
===Meet-in-the- middle attack===&lt;br /&gt;
A theoretical attack against encrypting a message twice using a single block cipher and two different keys. For example, double encryption with DES theoretically is no more secure than DES, which is why Triple DES became popular (it gives twice the effective key strength).&lt;br /&gt;
===Message Authentication Code===&lt;br /&gt;
A function that takes a message and a secret key (and possibly a nonce) and produces an output that cannot, in practice, be forged without possessing the secret key.&lt;br /&gt;
===Message digest===&lt;br /&gt;
The output of a hash function.&lt;br /&gt;
===Message integrity===&lt;br /&gt;
A message has integrity if it maintains the value it is supposed to maintain, as opposed to being modified on accident or as part of an attack.&lt;br /&gt;
===Methodology===&lt;br /&gt;
A mature set of processes applied to various stages of an applications' lifecycle to help reduce the likelihood of security vulnerabilities presence or exploitation.&lt;br /&gt;
===Metrics===&lt;br /&gt;
A metric is a standard unit of measure, such as meter or mile for length, or gram or ton for weight, or more generally, part of a system of parameters, or systems of measurement, or a set of ways of quantitatively and periodically measuring, assessing, controlling or selecting a person, process, event, or institution, along with the procedures to carry out measurements and the procedures for the interpretation of the assessment in the light of previous or comparable assessments.&lt;br /&gt;
===Miller-Rabin===&lt;br /&gt;
A primality test that is efficient because it is probabilistic, meaning that there is some chance it reports a composite (non-prime) number as a prime. There is a trade-off between efficiency and probability, but one can gain extremely high assurance without making unreasonable sacrifices in efficiency.&lt;br /&gt;
===Model===&lt;br /&gt;
A model is a pattern, plan, representation (especially in miniature), or description designed to show the main object or workings of an object, system, or concept.&lt;br /&gt;
===Modulus===&lt;br /&gt;
In the context of public key cryptography, a value by which all other values are reduced. That is, if a number is bigger than the modulus, the value of the number is considered to be the same as if the number were the remainder after dividing the number by the modulus.&lt;br /&gt;
==N==&lt;br /&gt;
===Near-collision resistance===&lt;br /&gt;
Given a plaintext value and the corresponding hash value, it should be computationally unfeasible to find a second plaintext value that gives the same hash value.&lt;br /&gt;
===NIST===&lt;br /&gt;
The National Institute of Standards and Technology is a division of the U.S. Department of Commerce. NIST issues standards and guidelines, with the hope that they will be adopted by the computing community.&lt;br /&gt;
===Non-repudiation===&lt;br /&gt;
The capability of establishing that a message was signed by a particular entity. That is, a message is said to be non-repudiatable when a user sends it, and one can prove that the user sent it. In practice, cryptography can demonstrate that only particular key material was used to produce a message. There are always legal defenses such as stolen credentials or duress.&lt;br /&gt;
===Nonce===&lt;br /&gt;
A value used with a cryptographic algorithm that must be unique in order to maintain the security of the system. Generally, the uniqueness requirement holds only for a single key — meaning that a {key, nonce} pair should never be reused.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Initialization vector|Initialization vector]], [[#Salt|Salt]].&lt;br /&gt;
&lt;br /&gt;
==O==&lt;br /&gt;
===OCB mode===&lt;br /&gt;
See also: [[#Offset Code Book mode|Offset Code Book mode]].&lt;br /&gt;
===OCSP===&lt;br /&gt;
See also: Online Certificate Status Protocol.&lt;br /&gt;
===OCSP responder===&lt;br /&gt;
The server side software that answers OCSP requests.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Online Certificate Status Protocol|Online Certificate Status Protocol]].&lt;br /&gt;
===OFB mode===&lt;br /&gt;
See also: [[#Output Feedback mode|Output Feedback mode]].&lt;br /&gt;
===Offset Code Book mode===&lt;br /&gt;
A patented encryption mode for block ciphers that provides both secrecy and message integrity and is capable of doing so at high speeds.&lt;br /&gt;
===OMAC===&lt;br /&gt;
One-key CBC-MAC. A secure, efficient way for turning a block cipher into a message authentication code. It is an improvement of the CBC-MAC, which is not secure in the arbitrary case. Other CBC-MAC variants use multiple keys in order to fix the problem with CBC-MAC. OMAC uses a single key and still has appealing provable security properties.&lt;br /&gt;
===One-time pad===&lt;br /&gt;
A particular cryptographic system that is provably secure in some sense, but highly impractical, because it requires a bit of entropy for every bit of message.&lt;br /&gt;
===One-time password===&lt;br /&gt;
A password that is only valid once. Generally, such passwords are derived from some master secret — which is shared by an entity and an authentication server — and are calculated via a challenge-response protocol.&lt;br /&gt;
===One-way hash function===&lt;br /&gt;
A hash function, where it is computationally unfeasible to determine anything about the input from the output.&lt;br /&gt;
===Online Certificate Status Protocol===&lt;br /&gt;
A protocol for determining whether a digital certificate is valid in real time without using CRLs. This protocol (usually abbreviated OCSP) is specified in RFC 2560.&lt;br /&gt;
===Output Feedback mode===&lt;br /&gt;
A block cipher mode that turns a block cipher into a stream cipher. The mode works by continually encrypting the previous block of keystream. The first block of keystream is generated by encrypting an initialization vector.&lt;br /&gt;
==P==&lt;br /&gt;
===Padding===&lt;br /&gt;
Data added to a message that is not part of the message. For example, some block cipher modes require messages to be padded to a length that is evenly divisible by the block length of the cipher — i.e., the number of bytes that the cipher processes at once.&lt;br /&gt;
===PAM===&lt;br /&gt;
Pluggable Authentication Modules is a technology for abstracting out authentication at the host level. It is similar to SASL, but is a bit higher up in the network stack and tends to be a much easier technology to use, particularly for system administrators, who can configure authentication policies quite easily using PAM.&lt;br /&gt;
&lt;br /&gt;
See also: [[#SASL|SASL]].&lt;br /&gt;
===Partial collision resistance===&lt;br /&gt;
When it is unfeasible to find two arbitrary inputs to a hash function that produce similar outputs — i.e., outputs that differ in only a few bits.&lt;br /&gt;
===Passive attack===&lt;br /&gt;
See also: [[#Eavesdropping attack|Eavesdropping attack]].&lt;br /&gt;
&lt;br /&gt;
===Passphrase===&lt;br /&gt;
A synonym for “password,” meant to encourage people to use longer (it is hoped, more secure) values.&lt;br /&gt;
===Password===&lt;br /&gt;
A value that is used for authentication.&lt;br /&gt;
===PBKDF2===&lt;br /&gt;
Password-Based Key Derivation Function #2. An algorithm defined in PKCS #5 for deriving a random value from a password.&lt;br /&gt;
===PEM encoding===&lt;br /&gt;
A simple encoding scheme for cryptographic objects that outputs printable values (by Base 64 encoding a DER-encoded representation of the cryptographic object). The scheme was first introduced in Privacy Enhanced Mail, a defunct way of providing E-mail security.&lt;br /&gt;
===Perfect forward secrecy===&lt;br /&gt;
Ensuring that the compromise of a secret does not divulge information that could lead to the recovery of data protected prior to the compromise.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Forward secrecy|Forward secrecy]].&lt;br /&gt;
===PKCS #1===&lt;br /&gt;
Public Key Cryptography Standard #1. A standard from RSA Labs specifying how to use the RSA algorithm for encrypting and signing data.&lt;br /&gt;
===PKCS #1===&lt;br /&gt;
padding  This form of padding can encrypt messages up to 11 bytes smaller than the modulus size in bytes. You should not use this method for any purpose other than encrypting session keys or hash values.&lt;br /&gt;
===PKCS #10===&lt;br /&gt;
Describes a standard syntax for certification requests.&lt;br /&gt;
===PKCS #11===&lt;br /&gt;
Specifies a programming interface called Cryptoki for portable cryptographic devices of all kinds.&lt;br /&gt;
===PKCS #3===&lt;br /&gt;
Public Key Cryptography Standard #3. A standard from RSA Labs specifying how to implement the Diffie-Hellman key exchange protocol.&lt;br /&gt;
===PKCS #5===&lt;br /&gt;
Public Key Cryptography Standard #5. A standard from RSA Labs specifying how to derive cryptographic keys from a password.&lt;br /&gt;
===PKCS #7===&lt;br /&gt;
Public Key Cryptography Standard #7. A standard from RSA Labs specifying a generic syntax for data that may be encrypted or signed.&lt;br /&gt;
===PKI===&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]].&lt;br /&gt;
===Plaintext===&lt;br /&gt;
An unencrypted message.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Ciphertext|Ciphertext]].&lt;br /&gt;
===PMAC===&lt;br /&gt;
The MAC portion of the OCB block cipher mode. It is a patented way of turning a block cipher into a secure, parallelizable MAC.&lt;br /&gt;
===Precomputation attack===&lt;br /&gt;
Any attack that involves precomputing significant amounts of data in advance of opportunities to launch an attack. A dictionary attack is a common precomputation attack.&lt;br /&gt;
===Predictive modelling===&lt;br /&gt;
Predictive modelling is the process by which a model is created or chosen to try to best predict the probability of an outcome. In many cases the model is chosen on the basis of detection theory to try to guess the probability of a signal given a set amount of input data, for example given an email determining how likely that it is spam.&lt;br /&gt;
===Private key===&lt;br /&gt;
In a public key cryptosystem, key material that is bound tightly to an individual entity that must remain secret in order for there to be secure communication.&lt;br /&gt;
===Privilege separation===&lt;br /&gt;
A technique for trying to minimize the impact that a programming flaw can have, where operations requiring privilege are separated out into a small, independent component (hopefully audited with care). Generally, the component is implemented as an independent process, and it spawns off a non-privileged process to do most of the real work. The two processes keep open a communication link, speaking a simple protocol.&lt;br /&gt;
===PRNG===&lt;br /&gt;
See also: [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
===Pseudo-random number generator===&lt;br /&gt;
An algorithm that takes data and stretches it into a series of random-looking outputs. Cryptographic pseudo-random number generators may be secure if the initial data contains enough entropy. Many popular pseudo-random number generators are not secure.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Stream cipher|Stream cipher]].&lt;br /&gt;
&lt;br /&gt;
===Public key===&lt;br /&gt;
In a public key cryptosystem, the key material that can be published publicly without compromising the security of the system. Generally, this material must be published; its authenticity must be determined definitively.&lt;br /&gt;
===Public Key Infrastructure===&lt;br /&gt;
A system that provides a means for establishing trust as to what identity is associated with a public key. Some sort of Public Key Infrastructure (PKI) is necessary to give reasonable assurance that one is communicating securely with the proper party, even if that infrastructure is ad hoc”&lt;br /&gt;
==Q==&lt;br /&gt;
==R==&lt;br /&gt;
===RA===&lt;br /&gt;
See also: [[#Registration Authority|Registration Authority]].&lt;br /&gt;
===Race condition===&lt;br /&gt;
A class of error in environments that are multi-threaded or otherwise multi- tasking, where an operation is falsely assumed to be atomic. That is, if two operations overlap instead of being done sequentially, there is some risk of the resulting computation not being correct. There are many cases where such a condition can be security critical.&lt;br /&gt;
&lt;br /&gt;
See also: [[#TOCTOU problem|TOCTOU problem]].&lt;br /&gt;
===Randomness===&lt;br /&gt;
A measure of how unguessable data is.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Entropy|Entropy]].&lt;br /&gt;
===RC2===&lt;br /&gt;
A block cipher with variable key sizes and 64-bit blocks.&lt;br /&gt;
===RC4===&lt;br /&gt;
A widely used stream cipher that is relatively fast but with some significant problems. One practical problem is that it has a weak key setup algorithm, though this problem can be mitigated with care. Another more theoretical problem is that RC4’s output is easy to distinguish from a truly random stream of numbers. This problem indicates that RC4 is probably not a good long-term choice for data security.&lt;br /&gt;
===RC5===&lt;br /&gt;
A block cipher that has several tunable parameters.&lt;br /&gt;
===Registration Authority===&lt;br /&gt;
An organization that is responsible for validating the identity of entities trying to obtain credentials in a Public Key Infrastructure.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Certification Authority|Certification Authority]], [[#Public Key Infrastructure|Public Key Infrastructure]].&lt;br /&gt;
===Rekeying===&lt;br /&gt;
Changing a key in a cryptographic system.&lt;br /&gt;
===Related key attack===&lt;br /&gt;
A class of cryptographic attack where one takes advantage of known relationships between keys to expose information about the keys or the messages those keys are protecting.&lt;br /&gt;
===Revocation===&lt;br /&gt;
In the context of Public Key Infrastructure, the act of voiding a digital certificate.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]], [[#X.509 certificate|X.509 certificate]].&lt;br /&gt;
===RIPEMD-160===&lt;br /&gt;
A cryptographic hash function that is well regarded. It has a 160-bit output, and is a bit slower than SHA1.&lt;br /&gt;
===RMAC===&lt;br /&gt;
A construction for making a Message Authentication Code out of a block cipher. It is not generally secure in the way that OMAC is, and is generally considered not worth using due to the existence of better alternatives.&lt;br /&gt;
&lt;br /&gt;
See also: [[#OMAC|OMAC]].&lt;br /&gt;
===Rollback attack===&lt;br /&gt;
An attack where one forces communicating parties to agree on an insecure protocol version.&lt;br /&gt;
===Root certificate===&lt;br /&gt;
A certificate that is intrinsically trusted by entities in a Public Key Infrastructure — generally should be transported over a secure medium. Root certificates belong to a Certification Authority and are used to sign other certificates that are deemed to be valid. When a system tries to establish the validity of a certificate, one of the first things that should happen is that it should look for a chain of trust to a known, trusted root certificate. That is, if the certificate to be validated is not signed by a root, one checks the certificate(s) used to sign it to determine if those were signed by a root cert. Lather, rinse, repeat.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]].&lt;br /&gt;
===Round===&lt;br /&gt;
In a block cipher, a group of operations applied as a unit that has an inverse that undoes the operation. Most block ciphers define a round operation and then apply that round operation numerous times — though often applying a different key for each round, where the round key is somehow derived from the base key.&lt;br /&gt;
===RSA===&lt;br /&gt;
A popular public key algorithm for encryption and digital signatures invented by Ron Rivest, Adi Shamir and Leonard Adleman. It is believed that, if factoring large numbers is computationally unfeasible, then RSA can be used securely in practice.&lt;br /&gt;
===RSASSA-PSS===&lt;br /&gt;
A padding standard defined in PKCS #1, used for padding data prior to RSA signing operations.&lt;br /&gt;
==S==&lt;br /&gt;
===S/Key===&lt;br /&gt;
A popular one-time password system.&lt;br /&gt;
&lt;br /&gt;
See also: [[#One-time password|One-time password]].&lt;br /&gt;
===S/MIME===&lt;br /&gt;
A protocol for secure electronic mail standardized by the IETF. It relies on standard X.509-based Public Key Infrastructure.&lt;br /&gt;
===SACL===&lt;br /&gt;
System Access Control List. In Windows, the part of an ACL that determines audit logging policy.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Access Control List|Access Control List]], [[#DACL|DACL]].&lt;br /&gt;
===Salt===&lt;br /&gt;
Data that can be public but is used to prevent against precomputation attacks.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Initialization vector|Initialization vector]], [[#Nonce|Nonce]].&lt;br /&gt;
===SASL===&lt;br /&gt;
The Simple Authentication and Security Layer, which is a method for adding authentication services to network protocols somewhat generically. It is also capable of providing key exchange in many circumstances.&lt;br /&gt;
===Secret key===&lt;br /&gt;
See also: [[#Symmetric key|Symmetric key]].&lt;br /&gt;
===Secure Socket Layer===&lt;br /&gt;
A popular protocol for establishing secure channels over a reliable transport, utilizing a standard X.509 Public Key Infrastructure for authenticating machines. This protocol has evolved into the TLS protocol, but the term SSL is often used to generically refer to both.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Transport Layer Security|Transport Layer Security]].&lt;br /&gt;
===Seed===&lt;br /&gt;
A value used to initialize a pseudo-random number generator.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Entropy|Entropy]], [[#Initialization vector|Initialization vector]], [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
&lt;br /&gt;
===Self-signed certificate===&lt;br /&gt;
A certificate signed by the private key associated with that certificate. In an X.509 Public Key Infrastructure, all certificates need to be signed. Since root certificates have no third-party signature to establish their authenticity, they are used to sign themselves. In such a case, trust in the certificate must be established by some other means.&lt;br /&gt;
===Serpent===&lt;br /&gt;
A modern block cipher with 128-bit blocks and variable-sized keys. A finalist in the AES competition, Serpent has a higher security margin by design than other candidates, and is a bit slower on typical 32-bit hardware as a result.&lt;br /&gt;
&lt;br /&gt;
See also: [[#AES|AES]].&lt;br /&gt;
===Session key===&lt;br /&gt;
A randomly generated key used to secure a single connection and then discarded.&lt;br /&gt;
===SHA-256===&lt;br /&gt;
A cryptographic hash function from NIST with 256-bit message digests.&lt;br /&gt;
===SHA-384===&lt;br /&gt;
SHA-512 with a truncated digest (as specified by NIST).&lt;br /&gt;
===SHA-512===&lt;br /&gt;
A cryptographic hash function from NIST with 512-bit message digests.&lt;br /&gt;
===SHA1===&lt;br /&gt;
A fairly fast, well regarded hash function with 160-bit digests that has been standardized by the National Institute of Standards and Technology (NIST).&lt;br /&gt;
===Shared secret===&lt;br /&gt;
A value shared by parties that may wish to communicate, where the secrecy of that value is an important component of secure communications. Typically, a shared secret is either an encryption key, a MAC key, or some value used to derive such keys.&lt;br /&gt;
===Shatter attack===&lt;br /&gt;
A class of attack on the Windows event system. The Windows messaging system is fundamentally fragile from a security perspective because it allows for arbitrary processes to insert control events into the message queue without sufficient mechanisms for authentication. Sometimes messages can be used to trick other applications to execute malicious code.&lt;br /&gt;
===Single sign-on===&lt;br /&gt;
Single sign-on allows you to access all computing resources that you should be able to reach by using a single set of authentication credentials that are presented a single time per login session. Single sign-on is a notion for improved usability of security systems that can often increase the security exposure of a system significantly.&lt;br /&gt;
===Snooping attacks===&lt;br /&gt;
Attacks where data is read off a network while in transit without modifying or destroying the data.&lt;br /&gt;
===SNOW===&lt;br /&gt;
A very fast stream cipher that is patent-free and seems to have a very high security margin.&lt;br /&gt;
===SQL Injection===&lt;br /&gt;
[[SQL injection]] is a security vulnerability that occurs in the persistence/database layer of a web application. This vulnerability is derived from the incorrect escaping of variables embedded in SQL statements. It is in fact an instance of a more general class of vulnerabilities based on poor input validation and bad design that can occur whenever one programming or scripting language is embedded inside another.&lt;br /&gt;
&lt;br /&gt;
===SSL===&lt;br /&gt;
See also: [[#Secure Socket Layer|Secure Socket Layer]].&lt;br /&gt;
===Stack smashing===&lt;br /&gt;
Overwriting a return address on the program execution stack by exploiting a buffer overflow. Generally, the implication is that the return address gets replaced with a pointer to malicious code.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Buffer overflow|Buffer overflow]].&lt;br /&gt;
===Station-to-station protocol===&lt;br /&gt;
A simple variant of the Diffie-Hellman key exchange protocol that provides key agreement and authenticates each party to the other. This is done by adding digital signatures (which must be done carefully).&lt;br /&gt;
&lt;br /&gt;
See also: [[#Diffie-Hellman key exchange|Diffie-Hellman key exchange]].&lt;br /&gt;
===Stream cipher===&lt;br /&gt;
A pseudo-random number generator that is believed to be cryptographically strong and always produces the same stream of output given the same initial seed (i.e., key). Encrypting with a stream cipher consists of combining the plaintext with the keystream, usually via XOR.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
===Strong collision resistance===&lt;br /&gt;
Strong collision resistance is a property that a hash function may have (and a good cryptographic hash function will have), characterized by it being computationally unfeasible to find two arbitrary inputs that yield the same output.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Hash function|Hash function]], [[#Weak collision resistance|Weak collision resistance]].&lt;br /&gt;
===Surreptitious forwarding===&lt;br /&gt;
An attack on some public key cryptosystems where a malicious user decrypts a digitally signed message and then encrypts the message using someone else’s public key: giving the end receiver the impression that the message was originally destined for them.&lt;br /&gt;
===Symmetric cryptography===&lt;br /&gt;
Cryptography that makes use of shared secrets as opposed to public keys.&lt;br /&gt;
===Symmetric key===&lt;br /&gt;
See also: [[#Shared secret|Shared secret]].&lt;br /&gt;
==T==&lt;br /&gt;
===Tag===&lt;br /&gt;
The result of applying a keyed message authentication code to a message.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]].&lt;br /&gt;
===Tamper-proofing===&lt;br /&gt;
See also: [[#Anti-tampering|Anti-tampering]].&lt;br /&gt;
===Threat model===&lt;br /&gt;
A representation of the system threats that are expected to be reasonable. This includes denoting what kind of resources an attacker is expected to have, in addition to what kinds of things the attacker may be willing to try to do. Sometimes called an architectural security assessment.&lt;br /&gt;
===Time of check, time of use problem===&lt;br /&gt;
See also: [[#TOCTOU problem|TOCTOU problem]].&lt;br /&gt;
===TLS===&lt;br /&gt;
See also: [[#Transport Layer Security|Transport Layer Security]].&lt;br /&gt;
===TMAC===&lt;br /&gt;
A two-keyed variant of the CBC-MAC that overcomes the fundamental limitation of that MAC.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]], [[#CBC-MAC|CBC-MAC]], [[#OMAC|OMAC]].&lt;br /&gt;
===TOCTOU problem===&lt;br /&gt;
Time-of-check, time-of-use race condition. A type of race condition between multiple processes on a file system. Generally what happens is that a single program checks some sort of property on a file, and then in subsequent instructions tries to use the resource if the check succeeded. The problem is that — even if the use comes immediately after the check — there is often some significant chance that a second process can invalidate the check in a malicious way. For example, a privileged program might check write privileges on a valid file, and the attacker can then replace that file with a symbolic link to the system password file.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Race condition|Race condition]].&lt;br /&gt;
===Transport Layer Security===&lt;br /&gt;
The successor to SSL, a protocol for establishing secure channels over a reliable transport, using a standard X.509 Public Key Infrastructure for authenticating machines. The protocol is standardized by the IETF.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Secure Socket Layer|Secure Socket Layer]].&lt;br /&gt;
===Triple DES===&lt;br /&gt;
A variant of the original Data Encryption Standard that doubles the effective security. Often abbreviated to 3DES. The security level of 3DES is still considered to be very high, but there are faster block ciphers that provide comparable levels of security — such as AES.&lt;br /&gt;
===Trojan===&lt;br /&gt;
See also: [[#Backdoor|Backdoor]].&lt;br /&gt;
===Trojan Horse===&lt;br /&gt;
See also: [[#Backdoor|Backdoor]].&lt;br /&gt;
===Trusted third party===&lt;br /&gt;
An entity in a system to whom entities must extend some implicit trust. For example, in a typical Public Key Infrastructure, the Certification Authority constitutes a trusted third party.&lt;br /&gt;
===Twofish===&lt;br /&gt;
A modern block cipher with 128-bit blocks and variable-sized keys.   A finalist in the AES competition; it is an evolution of the Blowfish cipher.&lt;br /&gt;
&lt;br /&gt;
See also: [[#AES|AES]], [[#Blowfish|Blowfish]].&lt;br /&gt;
==U==&lt;br /&gt;
===UMAC===&lt;br /&gt;
A secure MAC based on a set of universal hash functions that is extremely fast in software but so complex that there has never been a validated implementation.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Universal hash function|Universal hash function]].&lt;br /&gt;
===Universal hash function===&lt;br /&gt;
A keyed hash function that has ideal hash properties. In practice, the only practical functions of this nature are really &amp;amp;quot;almost universal&amp;amp;quot; hash functions, meaning they come very close to being ideal. Universal and near-universal hash functions are not cryptographically secure when used naively for message authentication but can be adapted to be secure for this purpose easily.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cryptographic hash function|Cryptographic hash function]], [[#Hash function|Hash function]], [[#One-way hash function|One-way hash function]].&lt;br /&gt;
&lt;br /&gt;
==V==&lt;br /&gt;
===Validation===&lt;br /&gt;
The act of determining that data is sound. In security, generally used in the context of validating input.&lt;br /&gt;
==W==&lt;br /&gt;
===Weak collision resistance===&lt;br /&gt;
A property that a hash function may have (and a good cryptographic hash function will have), characterized by it being unfeasible to find a second input that produces the same output as a known input.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Hash function|Hash function]], [[#Strong collision resistance|Strong collision resistance]].&lt;br /&gt;
===Whitelist===&lt;br /&gt;
When performing input validation, the set of items that, if matched, results in the input being accepted as valid. If there is no match to the whitelist, then the input is considered invalid. That is, a whitelist uses a &amp;amp;quot;default deny&amp;amp;quot; policy.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Blacklist|Blacklist]], [[#Default deny|Default deny]].&lt;br /&gt;
&lt;br /&gt;
===Window of vulnerability===&lt;br /&gt;
The period of time in which a vulnerability can possibly be exploited.&lt;br /&gt;
&lt;br /&gt;
===[[What are web applications?]]===&lt;br /&gt;
&lt;br /&gt;
==X==&lt;br /&gt;
===X.509 certificate===&lt;br /&gt;
A digital certificate that complies with the X.509 standard (produced by ANSI).&lt;br /&gt;
===XCBC-MAC===&lt;br /&gt;
A three-key variant of the CBC-MAC that overcomes the fundamental limitation of that MAC.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]], [[#CBC-MAC|CBC-MAC]], [[#OMAC|OMAC]].&lt;br /&gt;
&lt;br /&gt;
===XSS===&lt;br /&gt;
See also: [[#Cross-site scripting|Cross-site scripting]].&lt;br /&gt;
==Y==&lt;br /&gt;
==Z==&lt;br /&gt;
&lt;br /&gt;
{{compactTOC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Glossary&amp;diff=139591</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Glossary&amp;diff=139591"/>
				<updated>2012-11-16T08:41:23Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: /* XMACC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{compactTOC}}&lt;br /&gt;
&lt;br /&gt;
{{SecureSoftware}}&lt;br /&gt;
&lt;br /&gt;
==0–9==&lt;br /&gt;
===3DES===&lt;br /&gt;
See also: [[#Triple DES|Triple DES]]&lt;br /&gt;
==A==&lt;br /&gt;
===Access Control List===&lt;br /&gt;
A list of credentials attached to a resource indicating whether or not the credentials have access to the resource.&lt;br /&gt;
===ACL===&lt;br /&gt;
Access Control List&lt;br /&gt;
===Active attack===&lt;br /&gt;
Any network-based attack other than simple eavesdropping — i.e., a passive attack).&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
A fast general-purpose block cipher standardized by NIST (the National Institute of Standards and Technology). The AES selection process was a multi-year competition, where Rijndael was the winning cipher.&lt;br /&gt;
===AES===&lt;br /&gt;
See also: [[#Advanced Encryption Standard|Advanced Encryption Standard]]&lt;br /&gt;
===Anti-debugger===&lt;br /&gt;
Referring to technology that detects or thwarts the use of a debugger on a piece of software.&lt;br /&gt;
===Anti-tampering===&lt;br /&gt;
Referring to technology that attempts to thwart the reverse engineering and patching of a piece of software in binary format.&lt;br /&gt;
===Architectural security assessment===&lt;br /&gt;
See also: [[#Threat model|Threat Model]]&lt;br /&gt;
&lt;br /&gt;
===ASN.1===&lt;br /&gt;
Abstract Syntax Notation is a language for representing data objects. It is popular to use this in specifying cryptographic protocols, usually using DER (Distinguished Encoding Rules), which allows the data layout to be unambiguously specified.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Distinguished Encoding Rules|Distinguished Encoding Rules]].&lt;br /&gt;
===Asymmetric cryptography===&lt;br /&gt;
Cryptography involving public keys, as opposed to cryptography making use of shared secrets.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Symmetric cryptography|Symmetric cryptography]].&lt;br /&gt;
===Audit===&lt;br /&gt;
In the context of security, a review of a system in order to validate the security of the system. Generally, this either refers to code auditing or reviewing audit logs.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Audit log|Audit log]], [[#Code auditing|Code auditing]].&lt;br /&gt;
===Audit log===&lt;br /&gt;
Records that are kept for the purpose of later verifying that the security properties of a system have remained intact.&lt;br /&gt;
===Authenticate-and-encrypt===&lt;br /&gt;
When using a cipher to encrypt and a MAC to provide message integrity, this paradigm specifies that one authenticates the plaintext and encrypts the plaintext, possibly in parallel. This is not secure in the general case.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Authenticate-then-encrypt|Authenticate-then-encrypt]], [[#Encrypt-then-authenticate|Encrypt-then-authenticate]].&lt;br /&gt;
&lt;br /&gt;
===Authenticate-then-encrypt===&lt;br /&gt;
When using a cipher to encrypt and a MAC to provide message integrity, this paradigm specifies that one authenticates the plaintext and then encrypts the plaintext concatenated with the MAC tag. This is not secure in the general case, but usually works well in practice.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Authenticate-and-encrypt|Authenticate-and-encrypt]], [[#Encrypt-then-authenticate|Encrypt-then-authenticate]].&lt;br /&gt;
===Authentication===&lt;br /&gt;
The process of verifying identity, ownership, and/or authorization.&lt;br /&gt;
==B==&lt;br /&gt;
===Backdoor===&lt;br /&gt;
Malicious code inserted into a program for the purposes of providing the author covert access to machines running the program.&lt;br /&gt;
===Base 64===&lt;br /&gt;
A method for encoding binary data into printable ASCII strings. Every byte of output maps to six bits of input (minus possible padding bytes).&lt;br /&gt;
&lt;br /&gt;
===Big endian===&lt;br /&gt;
Refers to machines representing words most significant byte first. While x86 machines do not use big endian byte ordering (instead using little endian), the PowerPC and SPARC architectures do. This is also network byte order.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Little endian|Little endian]].&lt;br /&gt;
===Birthday attack===&lt;br /&gt;
Take a function f() that seems to map an input to a random output of some fixed size (a pseudo-random function or PRF). A birthday attack is simply selecting random inputs for f() and checking to see if any previous values gave the same output. Statistically, if the output size is S bits, then one can find a collision in 2S/2 operations, on average.&lt;br /&gt;
===Bit-flipping attack===&lt;br /&gt;
In a stream cipher, flipping a bit in the ciphertext flips the corresponding bit in the plaintext. If using a message authentication code (MAC), such attacks are not practical.&lt;br /&gt;
===Blacklist=== &lt;br /&gt;
When performing input validation, the set of items that — if matched — result in the input being considered invalid. If no invalid items are found, the result is valid.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Whitelist|Whitelist]].&lt;br /&gt;
&lt;br /&gt;
===Blinding===&lt;br /&gt;
A technique used to thwart timing attacks.&lt;br /&gt;
===Block cipher===&lt;br /&gt;
An encryption algorithm that maps inputs of size n to outputs of size n (n is called the block size). Data that is not a valid block size must somehow be padded (generally by using an encryption mode). The same input always produces the same output.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Stream cipher|Stream cipher]].&lt;br /&gt;
===Blowfish===&lt;br /&gt;
A block cipher with 64-bit blocks and variable length keys, created by Bruce Schneier. This cipher is infamous for having slow key-setup times.&lt;br /&gt;
===Brute-force attack===&lt;br /&gt;
An attack on an encryption algorithm where the encryption key for a ciphertext is determined by trying to decrypt with every key until valid plaintext is obtained.&lt;br /&gt;
===Buffer overflow===&lt;br /&gt;
A buffer overflow is when you can put more data into a memory location than is allocated to hold that data. Languages like C and C++ that do no built-in bounds checking are susceptible to such problems. These problems are often security-critical.&lt;br /&gt;
==C==&lt;br /&gt;
===CA===&lt;br /&gt;
See Certification Authority.&lt;br /&gt;
===Canary===&lt;br /&gt;
A piece of data, the absence of which indicates a violation of a security policy. Several tools use a canary for preventing certain stack-smashing buffer overflow attacks.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Buffer overflow|Buffer overflow]], [[#Stack smashing|Stack smashing]].&lt;br /&gt;
===Capture-replay attacks===&lt;br /&gt;
When an attacker can capture data off the wire and replay it later without the bogus data being detected as bogus.&lt;br /&gt;
===Carter-Wegmen Counter (data encryption mode)===&lt;br /&gt;
A parallelizable and patent-free high-level encryption mode that provides both encryption and built-in message integrity.&lt;br /&gt;
&lt;br /&gt;
===CAST5===&lt;br /&gt;
A block cipher with 64-bit blocks and key sizes up to 128 bits. It is patent- free, and generally considered sound, but modern algorithms with larger block sizes are generally preferred (e.g., AES). &lt;br /&gt;
&lt;br /&gt;
See also: [[#AES|AES]].&lt;br /&gt;
===CBC Mode===&lt;br /&gt;
See also: [[#Cipher-Block Chaining mode|Cipher-Block Chaining mode]].&lt;br /&gt;
&lt;br /&gt;
===CBC-MAC===&lt;br /&gt;
A simple construction for turning a block cipher into a message authentication code. It only is secure when all messages MAC’d with a single key are the same size. However, there are several variants that thwart this problem, the most important being OMAC. &lt;br /&gt;
&lt;br /&gt;
See also: [[#OMAC|OMAC]].&lt;br /&gt;
===CCM mode===&lt;br /&gt;
See also: [[#Counter mode with CBC-MAC (CCM)|Counter mode with CBC-MAC (CCM)]].&lt;br /&gt;
&lt;br /&gt;
===Certificate===&lt;br /&gt;
A data object that binds information about a person or some other entity to a public key. The binding is generally done using a digital signature from a trusted third party (a certification authority).&lt;br /&gt;
===Certificate Revocation List===&lt;br /&gt;
A list published by a certification authority indicating which issued certificates should be considered invalid.&lt;br /&gt;
===Certificate Signing Request===&lt;br /&gt;
Data about an entity given to a certification authority. The authority will package the data into a certificate and sign the certificate if the data in the signing request is validated.&lt;br /&gt;
===Certification Authority===&lt;br /&gt;
An entity that manages digital certificates — i.e., issues and revokes. Verisign and InstantSSL are two well known CAs.&lt;br /&gt;
===CFB mode===&lt;br /&gt;
See also: [[#Cipher Feedback mode|Cipher Feedback mode]].&lt;br /&gt;
===Chain responder===&lt;br /&gt;
An OCSP responder that relays the results of querying another OCSP responder.&lt;br /&gt;
&lt;br /&gt;
See also: [[#OCSP|OCSP]].&lt;br /&gt;
&lt;br /&gt;
===Choke point===&lt;br /&gt;
In computer security, a place in a system where input is routed for the purposes of performing data validation. The implication is that there are few such places in a system and that all data must pass through one or more of the choke points. The idea is that funneling input through a small number of choke points makes it easier to ensure that input is properly validated. One potential concern is that poorly chosen choke points may not have enough information to perform input validation that is as accurate as possible.&lt;br /&gt;
===chroot===&lt;br /&gt;
A UNIX system call that sets the root directory for a process to any arbitrary directory. The idea is compartmentalization: Even if a process is compromised, it should not be able to see interesting parts of the file system beyond its own little world. There are some instances where chroot &amp;amp;quot;jails&amp;amp;quot; can be circumvented; it can be difficult to build proper operating environments to make chroot work well.&lt;br /&gt;
===Cipher-Block Chaining mode===&lt;br /&gt;
A block cipher mode that provides secrecy but not message integrity. Messages encrypted with this mode should have random initialization vectors.&lt;br /&gt;
===Cipher Feedback mode===&lt;br /&gt;
A mode that turns a block cipher into a stream cipher. This mode is safe only when used in particular configurations. Generally, CTR mode and OFB mode are used instead since both have better security bounds.&lt;br /&gt;
===Ciphertext===&lt;br /&gt;
The result of encrypting a message.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Plaintext|Plaintext]].&lt;br /&gt;
===Ciphertext stealing mode===&lt;br /&gt;
A block cipher mode of operation that is similar to CBC mode except that the final block is processed in such a way that the output is always the same length as the input. That is, this mode is similar to CBC mode but does not require padding.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cipher-Block Chaining mode|Cipher-Block Chaining mode]], [[#Padding|Padding]].&lt;br /&gt;
&lt;br /&gt;
===CLASP===&lt;br /&gt;
See also: [[#Comprehesive, Lightweight Application Security Process|Comprehesive, Lightweight Application Security Process]]&lt;br /&gt;
&lt;br /&gt;
===Code auditing===&lt;br /&gt;
Reviewing computer software for security problems.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Audit|Audit]].&lt;br /&gt;
===Code signing===&lt;br /&gt;
Signing executable code to establish that it comes from a trustworthy vendor. The signature must be validated using a trusted third party in order to establish identity.&lt;br /&gt;
===Compartmentalization===&lt;br /&gt;
Separating a system into parts with distinct boundaries, using simple, well- defined interfaces. The basic idea is that of containment — i.e., if one part is compromised, perhaps the extent of the damage can be limited.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Jail|Jail]], [[#Chroot|Chroot]].&lt;br /&gt;
===Comprehesive, Lightweight Application Security Process===&lt;br /&gt;
An activity-driven, role based set of process components whose core contains formalized best practices for building security into your existing or new-start software development lifecycles in a structured, repeatable, and measurable way.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[:Category:OWASP CLASP Project|OWASP CLASP Project]]&lt;br /&gt;
&lt;br /&gt;
===Context object===&lt;br /&gt;
In a cryptographic library, a data object that holds the intermediate state associated with the cryptographic processing of a piece of data. For example, if incrementally hashing a string, a context object stores the internal state of the hash function necessary to process further data.&lt;br /&gt;
===Counter mode===&lt;br /&gt;
A parallelizable encryption mode that effectively turns a block cipher into a stream cipher. It is a popular component in authenticated encryption schemes due to its optimal security bounds and good performance characteristics.&lt;br /&gt;
===Counter mode with CBC-MAC (CCM)===&lt;br /&gt;
An encryption mode that provides both message secrecy and integrity. It was the first such mode that was not covered by patent.&lt;br /&gt;
&lt;br /&gt;
===CRAM===&lt;br /&gt;
A password-based authentication mechanism using a cryptographic hash function (usually MD5). It does not provide adequate protection against several common threats to password-based authentication systems. HTTP Digest Authentication is a somewhat better alternative; it is replacing CRAM in most places.&lt;br /&gt;
===CRC===&lt;br /&gt;
Cyclic Redundancy Check. A means of determining whether accidental transmission errors have occurred. Such algorithms are not cryptographically secure because attackers can often forge CRC values or even modify data maliciously in such a way that the CRC value does not change. Instead, one should use a strong, keyed message authentication code such as HMAC or OMAC.&lt;br /&gt;
&lt;br /&gt;
See also: [[#HMAC|HMAC]], [[#Message Authentication Code|Message Authentication Code]], [[#OMAC|OMAC]].&lt;br /&gt;
===Critical extensions===&lt;br /&gt;
In an X.509 certificate, those extensions that must be recognized by any software processing the certificate. If a piece of software does not recognize an extension marked as critical, the software must regard the certificate as invalid.&lt;br /&gt;
===CRL===&lt;br /&gt;
See also: [[#Certificate Revocation List|Certificate Revocation List]].&lt;br /&gt;
&lt;br /&gt;
===Cross-site request forgery===&lt;br /&gt;
[[CSRF]] is an attack which forces an end user to execute unwanted actions on a web application in which he/she is currently authenticated. With little help of social engineering (like sending a link via email/chat), an attacker may force the users of a web application to execute actions of the attackers choosing. A successful CSRF exploit can compromise end user data and operation in case of normal user. If the targeted end user is the administrator account, this can compromise the entire web application.&lt;br /&gt;
===Cross-site scripting===&lt;br /&gt;
A class of problems resulting from insufficient input validation where one user can add content to a web site that can be malicious when viewed by other users to the web site. For example, one might post to a message board that accepts arbitrary HTML and include a malicious code item.&lt;br /&gt;
===Cryptanalysis===&lt;br /&gt;
The science of breaking cryptographic algorithms.&lt;br /&gt;
===Cryptographic hash function===&lt;br /&gt;
A function that takes an input string of arbitrary length and produces a fixed- size output — where it is unfeasible to find two inputs that map to the same output, and it is unfeasible to learn anything about the input from the output.&lt;br /&gt;
===Cryptographic randomness===&lt;br /&gt;
Data produced by a cryptographic pseudo-random number generator. The probability of figuring out the internal state of the generator is related to the strength of the underlying cryptography — i.e., assuming the generator is seeded with enough entropy.&lt;br /&gt;
===Cryptography===&lt;br /&gt;
The science of providing secrecy, integrity, and non-repudiation for data.&lt;br /&gt;
===CSR===&lt;br /&gt;
See also: [[#Certificate Signing Request|Certificate Signing Request]].&lt;br /&gt;
===CSS===&lt;br /&gt;
Cross-site scripting. Generally, however, this is abbreviated to XSS in order to avoid confusion with cascading style sheets.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cross-site scripting|Cross-site scripting]].&lt;br /&gt;
===CTR mode===&lt;br /&gt;
See also: [[#Counter mode|Counter mode]].&lt;br /&gt;
===CWC mode===&lt;br /&gt;
See also: [[#Carter-Wegmen Counter (data encryption mode)|Carter Wegmen + Counter mode]].&lt;br /&gt;
&lt;br /&gt;
==D==&lt;br /&gt;
===DACL===&lt;br /&gt;
Discretionary Access Control List. In a Windows ACL, a list that determines access rights to an object.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Access Control List|Access Control List]].&lt;br /&gt;
&lt;br /&gt;
===Davies-Meyer===&lt;br /&gt;
An algorithm for turning a block cipher into a cryptographic one-way hash function.&lt;br /&gt;
===Default deny===&lt;br /&gt;
A paradigm for access control and input validation where an action must explicitly be allowed. The idea behind this paradigm is that one should limit the possibilities for unexpected behavior by being strict, instead of lenient, with rules.&lt;br /&gt;
===Defense-in-depth===&lt;br /&gt;
A principle for building systems stating that multiple defensive mechanisms at different layers of a system are usually more secure than a single layer of defense. For example, when performing input validation, one might validate user data as it comes in and then also validate it before each use — just in case something was not caught, or the underlying components are linked against a different front end, etc.&lt;br /&gt;
===DEK===&lt;br /&gt;
Data encrypting key.&lt;br /&gt;
===Delta CRLs===&lt;br /&gt;
A variation of Certificate Revocation Lists that allows for incremental updating, as an effort to avoid frequently re-downloading a large amount of unchanged data.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Certificate Revocation List|Certificate Revocation List]].&lt;br /&gt;
===Denial of service attack===&lt;br /&gt;
Any attack that affects the availability of a service. Reliability bugs that cause a service to crash or go into some sort of vegetative state are usually potential denial-of-service problems.&lt;br /&gt;
===DES===&lt;br /&gt;
The Data Encryption Standard. An encryption algorithm standardized by the US Government. The key length is too short, so this algorithm should be considered insecure. The effective key strength is 56 bits; the actual key size is 64 bits — 8 bits are wasted. However, there are variations such as Triple DES and DESX that increase security while also increasing the key size.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Advanced Encryption Standard|Advanced Encryption Standard]], [[#Triple DES|Triple DES]].&lt;br /&gt;
===DESX===&lt;br /&gt;
An extended version of DES that increases the resistance to brute-force attack in a highly efficient way by increasing the key length. The extra key material is mixed into the encryption process, using XORs. This technique does not improve resistance to differential attacks, but such attacks are still generally considered unfeasible against DES.&lt;br /&gt;
&lt;br /&gt;
See also: [[#DES|DES]].&lt;br /&gt;
===Dictionary attack===&lt;br /&gt;
An attack against a cryptographic system, using precomputating values to build a dictionary. For example, in a password system, one might keep a dictionary mapping ciphertext pairs in plaintext form to keys for a single plaintext that frequently occurs. A large enough key space can render this attack useless. In a password system, there are similar dictionary attacks, which are somewhat alleviated by salt. The end result is that the attacker — once he knows the salt — can do a “Crack”-style dictionary attack. Crack-style attacks can be avoided to some degree by making the password verifier computationally expensive to compute. Or select strong random passwords, or do not use a password-based system.&lt;br /&gt;
===Differential cryptanalysis===&lt;br /&gt;
A type of cryptographic attack where an attacker who can select related inputs learns information about the key from comparing the outputs. Modern ciphers of merit are designed in such a way as to thwart such attacks. Also note that such attacks generally require enough chosen plaintexts as to be considered unfeasible, even when there is a cipher that theoretically falls prey to such a problem.&lt;br /&gt;
===Diffie-Hellman key exchange===&lt;br /&gt;
A method for exchanging a secret key over an untrusted medium in such a way as to preserve the secrecy of the key. The two parties both contribute random data that factors into the final shared secret. The fundamental problem with this method is authenticating the party with whom you exchanged keys. The simple Diffie-Hellman protocol does not do that. One must also use some public-key authentication system such as DSA.&lt;br /&gt;
&lt;br /&gt;
See also: [[#DSA|DSA]], [[#Station-to-station protocol|Station-to-station protocol]].&lt;br /&gt;
===Digest size===&lt;br /&gt;
The output size for a hash function.&lt;br /&gt;
===Digital signature===&lt;br /&gt;
Data that proves that a document (or other piece of data) was not modified since being processed by a particular entity. Generally, what this really means is that — if someone ‘signs’ a piece of data — anyone who has the right public key can demonstrated which private key was used to sign the data.&lt;br /&gt;
===Digital Signature Algorithm===&lt;br /&gt;
See also: [[#DSA|DSA]].&lt;br /&gt;
===Distinguished Encoding Rules===&lt;br /&gt;
A set of rules used that describes how to encode ASN.1 data objects unambiguously.&lt;br /&gt;
&lt;br /&gt;
See also: [[#ASN.1|ASN.1]].&lt;br /&gt;
&lt;br /&gt;
===Distinguished Name===&lt;br /&gt;
In an X.509 certificate, a field that uniquely specifies the user or group to which the certificate is bound. Usually, the Distinguished Name will contain a user’s name or User ID, an organizational name, and a country designation. For a server certificate, it will often contain the DNS name of the machine.&lt;br /&gt;
===DN===&lt;br /&gt;
See also: [[#Distinguished Name|Distinguished Name]].&lt;br /&gt;
===DoS===&lt;br /&gt;
Denial of Service.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Denial of service attack|Denial of service attack]].&lt;br /&gt;
===DSA===&lt;br /&gt;
The Digital Signature Algorithm, a public key algorithm dedicated to digital signatures which was standardized by NIST. It is based on the same mathematical principles as Diffie-Hellman.&lt;br /&gt;
==E==&lt;br /&gt;
===Eavesdropping attack===&lt;br /&gt;
Any attack on a data connection where one simply records or views data instead of tampering with the connection.&lt;br /&gt;
===ECB Mode===&lt;br /&gt;
See also: [[#Electronic Code Book mode|Electronic Code Book mode]].&lt;br /&gt;
===ECC===&lt;br /&gt;
See also: [[#Eliptic Curve Cryptography|Eliptic Curve Cryptography]].&lt;br /&gt;
===EGD===&lt;br /&gt;
See also: [[#Entropy Gathering Daemon|Entropy Gathering Daemon]].&lt;br /&gt;
===Electronic Code Book mode===&lt;br /&gt;
An encryption mode for block ciphers that is more or less a direct use of the underlying block cipher. The only difference is that a message is padded out to a multiple of the block length. This mode should not be used under any circumstances.&lt;br /&gt;
===Eliptic Curve Cryptography===&lt;br /&gt;
A type of public key cryptography that — due to smaller key sizes — tends to be more efficient that standard cryptography. The basic algorithms are essentially the same, except that the operations are performed over different mathematical groups (called eliptic curves).&lt;br /&gt;
===EME-OAEP padding===&lt;br /&gt;
A padding scheme for public key cryptography that uses a “random” value generated, using a cryptographic hash function in order to prevent particular types of attacks against RSA.&lt;br /&gt;
&lt;br /&gt;
See also: [[#PKCS #1|PKCS #1 padding]].&lt;br /&gt;
===Encrypt-then-authenticate===&lt;br /&gt;
When using a cipher to encrypt and a MAC to provide message integrity, this paradigm specifies that one encrypts the plaintext, then MACs the ciphertext. This paradigm has theoretically appealing properties and is recommended to use in practice.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Authenticate-and-encrypt|Authenticate-and-encrypt]], [[#Authenticate-then-encrypt|Authenticate-then-encrypt]].&lt;br /&gt;
===Endianess===&lt;br /&gt;
The byte ordering scheme that a machine uses (usually either little endian or big endian).&lt;br /&gt;
&lt;br /&gt;
See also:[[#Big endian|Big endian]], [[#Little endian|Little endian]].&lt;br /&gt;
===Entropy===&lt;br /&gt;
Refers to the inherent unknowability of data to external observers. If a bit is just as likely to be a 1 as a 0 and a user does not know which it is, then the bit contains one bit of entropy.&lt;br /&gt;
===Entropy Gathering Daemon===&lt;br /&gt;
A substitute for /dev/random; a tool used for entropy harvesting.&lt;br /&gt;
===Entropy harvester===&lt;br /&gt;
A piece of software responsible for gathering entropy from a machine and distilling it into small pieces of high entropy data. Often an entropy harvester will produce a seed for a cryptographic pseudo-random number generator.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Entropy|Entropy]], [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
===Ephemeral keying===&lt;br /&gt;
Using one-time public key pairs for session key exchange in order to prevent recovering previous session keys if a private key is compromised. Long-term public key pairs are still used to establish identity.&lt;br /&gt;
===Euclidian algorithm===&lt;br /&gt;
An algorithm that computes the greatest common divisor of any two numbers.&lt;br /&gt;
===Extended Euclidian algorithm===&lt;br /&gt;
An algorithm used to compute the inverse of a number modulo “some other number.”&lt;br /&gt;
==F==&lt;br /&gt;
===Fingerprint===&lt;br /&gt;
The output of a cryptographic hash function.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message digest|Message digest]].&lt;br /&gt;
===FIPS===&lt;br /&gt;
Federal Information Processing Standard; a set of standards from NIST.&lt;br /&gt;
===FIPS-140===&lt;br /&gt;
A standard authored by the U.S. National Institute of Standards and Technology, that details general security requirements for cryptographic software deployed in a government systems (primarily cryptographic providers).&lt;br /&gt;
&lt;br /&gt;
See also: [[#NIST|NIST]], [[#FIPS|FIPS]].&lt;br /&gt;
===Format string attack===&lt;br /&gt;
The C standard library uses specifiers to format output. If an attacker can control the input to such a format string, he can often write to arbitrary memory locations.&lt;br /&gt;
===Forward secrecy===&lt;br /&gt;
Ensuring that the compromise of a secret does not divulge information that could lead to data protected prior to the compromise. In many systems with forward secrecy, it is only provided on a per-session basis, meaning that a key compromise will not affect previous sessions, but would allow an attacker to decrypt previous messages sent as a part of the current session.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Perfect forward secrecy|Perfect forward secrecy]].&lt;br /&gt;
==G==&lt;br /&gt;
==H==&lt;br /&gt;
===Hash function===&lt;br /&gt;
A function that maps a string of arbitrary length to a fixed size value in a deterministic manner. Such a function may or may not have cryptographic applications.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cryptographic hash function|Cryptographic hash function]], [[#Universal hash function|Universal hash function]], [[#One-way hash function|One-way hash function]].&lt;br /&gt;
===Hash function (cryptographic)===&lt;br /&gt;
See also: [[#Cryptographic hash function|Cryptographic hash function]].&lt;br /&gt;
===Hash function (one-way)===&lt;br /&gt;
See also: [[#One-way hash function|One-way hash function]].&lt;br /&gt;
===Hash function (universal)===&lt;br /&gt;
See also: [[#Universal hash function|Universal hash function]].&lt;br /&gt;
===Hash output===&lt;br /&gt;
See also: [[#Hash value|Hash value]].&lt;br /&gt;
===Hash value===&lt;br /&gt;
The output of a hash function.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Fingerprint|Fingerprint]], [[#Message digest|Message digest]].&lt;br /&gt;
===hash127===&lt;br /&gt;
A fast universal hash function from Dan Bernstein.&lt;br /&gt;
===HMAC===&lt;br /&gt;
A well-known algorithm for converting a cryptographic one-way hash function into a message authentication code.&lt;br /&gt;
===Honey Pot===&lt;br /&gt;
A strategy of setting up resources which an attacker believes are real but are infact designed specifically to catch the attacker.&lt;br /&gt;
&lt;br /&gt;
==I==&lt;br /&gt;
===IDEA===&lt;br /&gt;
A block cipher with 128-bit keys and 64-bit blocks popularly used with PGP. It is currently protected by patents.&lt;br /&gt;
===Identity establishment===&lt;br /&gt;
Authentication.&lt;br /&gt;
===IEEE P1363===&lt;br /&gt;
An IEEE standard for eliptic curve cryptography. Implementing the standard requires licensing patents from Certicom.&lt;br /&gt;
===Indirect CRLs===&lt;br /&gt;
A CRL issued by a third party, that can contain certificates from multiple CA’s.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Certificate|Certificate]], [[#Certificate Revocation List|Certificate Revocation List]], [[#Certification Authority|Certification Authority]].&lt;br /&gt;
===Initialization vector===&lt;br /&gt;
A value used to initialize a cryptographic algorithm. Often, the implication is that the value must be random.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Nonce|Nonce]], [[#Salt|Salt]].&lt;br /&gt;
===Input validation===&lt;br /&gt;
The act of determining that data input to a program is sound.&lt;br /&gt;
===Integer overflow===&lt;br /&gt;
When an integer value is too big to be held by its associated data type, the results can often be disastrous. This is often a problem when converting unsigned numbers to signed values.&lt;br /&gt;
===Integrity checking===&lt;br /&gt;
The act of checking whether a message has been modified either maliciously or by accident. Cryptographically strong message integrity algorithms should always be used when integrity is important.&lt;br /&gt;
===Interleaved encryption===&lt;br /&gt;
Processing the encryption of a message as multiple messages, generally treating every nth block as part of a single message.&lt;br /&gt;
===ISO/IEC 17799===&lt;br /&gt;
Provides best practice recommendations on information security management for use by those who are responsible for initiating, implementing or maintaining information security management systems. &lt;br /&gt;
===IV===&lt;br /&gt;
See also: [[#Initialization vector|Initialization vector]].&lt;br /&gt;
&lt;br /&gt;
==J==&lt;br /&gt;
===Jail===&lt;br /&gt;
A restricted execution environment meant to compartmentalize a process, so that — even if it has security problems — it cannot hurt resources which it would not normally have access to use. On FreeBSD, a system call similar to chroot that provides compartmentalization. Unlike chroot, it can also restrict network resources in addition to file system resources.&lt;br /&gt;
&lt;br /&gt;
See also: [[#chroot|chroot]].&lt;br /&gt;
&lt;br /&gt;
==K==&lt;br /&gt;
===Kerberos===&lt;br /&gt;
An authentication protocol that relies solely on symmetric cryptography, as opposed to public key cryptography. It still relies on a trusted third party (an authentication server). While Kerberos is often looked upon as a way to avoid problems with Public Key Infrastructure, it can be difficult to scale Kerberos beyond medium-sized organizations.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]], [[#Trusted third party|Trusted third party]].&lt;br /&gt;
===Key agreement===&lt;br /&gt;
The process of two parties agreeing on a shared secret, where both parties contribute material to the key.&lt;br /&gt;
===Key establishment===&lt;br /&gt;
The process of agreeing on a shared secret, where both parties contribute material to the key.&lt;br /&gt;
===Key exchange===&lt;br /&gt;
The process of two parties agreeing on a shared secret, usually implying that both parties contribute to the key.&lt;br /&gt;
===Key management===&lt;br /&gt;
Mechanisms and process for secure creation, storage, and handling of key material.&lt;br /&gt;
===Key schedule===&lt;br /&gt;
In a block cipher, keys used for individual “rounds” of encryption, derived from the base key in a cipher-dependent manner.&lt;br /&gt;
===Key transport===&lt;br /&gt;
When one party picks a session key and communicates it to a second party.&lt;br /&gt;
===Keystream Output===&lt;br /&gt;
from a stream cipher.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Pseudo-random number generator|Pseudo-random number generator]], [[#Stream cipher|Stream cipher]].&lt;br /&gt;
==L==&lt;br /&gt;
===LDAP===&lt;br /&gt;
Lightweight Directory Access Protocol. A directory protocol commonly used for storing and distributing CRLs.&lt;br /&gt;
===Length extension attack===&lt;br /&gt;
A class of attack on message authentication codes, where a tag can be forged without the key by extending a pre-existing message in a particular way. CBC-MAC in its simplest form has this problem, but variants protect against it (particularly OMAC).&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]], [[#OMAC|OMAC]].&lt;br /&gt;
===LFSR===&lt;br /&gt;
See also: [[#Linear Feedback Shift Register|Linear Feedback Shift Register]].&lt;br /&gt;
&lt;br /&gt;
===Linear cryptanalysis===&lt;br /&gt;
A type of cryptanalytic attack where linear approximations of behavior are used. Modern ciphers of merit are designed in such a way as to thwart such attacks. Also note that such attacks generally require enough chosen plaintexts as to be considered unfeasible — even when there is a cipher that theoretically falls prey to such a problem (such as DES).&lt;br /&gt;
===Linear Feedback Shift Register===&lt;br /&gt;
A non-cryptographic class of pseudo-random number generators, where output is determined by shifting out &amp;amp;quot;output&amp;amp;quot; bits and shifting in &amp;amp;quot;input&amp;amp;quot; bits, where the input bits are a function of the internal state of the register, perhaps combined with new entropy. LFSRs are based on polynomial math, and are not secure in and of themselves; however, they can be put to good use as a component in more secure cryptosystems.&lt;br /&gt;
===Little endian===&lt;br /&gt;
Refers to machines representing words of data least significant byte first, such as the Intel x86.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Big endian|Big endian]].&lt;br /&gt;
==M==&lt;br /&gt;
===MAC===&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]].&lt;br /&gt;
&lt;br /&gt;
===Man-in-the- middle attack===&lt;br /&gt;
An eavesdropping attack where a client’s communication with a server is proxied by an attacker. Generally, the implication is that the client performs a cryptographic key exchange with an entity and fails to authenticate that entity, thus allowing an attacker to look like a valid server.&lt;br /&gt;
===Matyas-Meyer-Oseas===&lt;br /&gt;
A construction for turning a block cipher into a cryptographic one-way hash function.&lt;br /&gt;
===MCF===&lt;br /&gt;
The Modular Crypt Format, a de-facto data format standard for storing password hashes commonly used on UNIX boxes as a replacement for the traditional UNIX crypt() format.&lt;br /&gt;
===MD-strengthening===&lt;br /&gt;
Merkel-Damgard strengthening, a general method for turning a collision- resistant compression function into a collision-resistant hash function by adding padding and an encoded length to the end of the input message. The key point behind MD-strengthening is that no possible input to the underlying hash function can be the tail end of a different input.&lt;br /&gt;
===MD2===&lt;br /&gt;
A cryptographic hash function optimized for 16-bit platforms. It has poor performance characteristics on other platforms and has a weak internal structure.&lt;br /&gt;
===MD4===&lt;br /&gt;
A cryptographic hash function that is known to be broken and should not be used under any circumstances.&lt;br /&gt;
===MD5===&lt;br /&gt;
A popular and fast cryptographic hash function that outputs 128-bit message digests. Its internal structure is known to be weak and should be avoided if at all possible.&lt;br /&gt;
===MD5-MCF===&lt;br /&gt;
A way of using MD5 to store password authentication information, using the modular crypt format.&lt;br /&gt;
&lt;br /&gt;
See also: [[#MCF|MCF]], [[#MD5|MD5]].&lt;br /&gt;
===MDC2===&lt;br /&gt;
A construction for turning a block cipher into a cryptographic hash function, where the output length is twice the block size of the cipher.&lt;br /&gt;
===Meet-in-the- middle attack===&lt;br /&gt;
A theoretical attack against encrypting a message twice using a single block cipher and two different keys. For example, double encryption with DES theoretically is no more secure than DES, which is why Triple DES became popular (it gives twice the effective key strength).&lt;br /&gt;
===Message Authentication Code===&lt;br /&gt;
A function that takes a message and a secret key (and possibly a nonce) and produces an output that cannot, in practice, be forged without possessing the secret key.&lt;br /&gt;
===Message digest===&lt;br /&gt;
The output of a hash function.&lt;br /&gt;
===Message integrity===&lt;br /&gt;
A message has integrity if it maintains the value it is supposed to maintain, as opposed to being modified on accident or as part of an attack.&lt;br /&gt;
===Methodology===&lt;br /&gt;
A mature set of processes applied to various stages of an applications' lifecycle to help reduce the likelihood of security vulnerabilities presence or exploitation.&lt;br /&gt;
===Metrics===&lt;br /&gt;
A metric is a standard unit of measure, such as meter or mile for length, or gram or ton for weight, or more generally, part of a system of parameters, or systems of measurement, or a set of ways of quantitatively and periodically measuring, assessing, controlling or selecting a person, process, event, or institution, along with the procedures to carry out measurements and the procedures for the interpretation of the assessment in the light of previous or comparable assessments.&lt;br /&gt;
===Miller-Rabin===&lt;br /&gt;
A primality test that is efficient because it is probabilistic, meaning that there is some chance it reports a composite (non-prime) number as a prime. There is a trade-off between efficiency and probability, but one can gain extremely high assurance without making unreasonable sacrifices in efficiency.&lt;br /&gt;
===Model===&lt;br /&gt;
A model is a pattern, plan, representation (especially in miniature), or description designed to show the main object or workings of an object, system, or concept.&lt;br /&gt;
===Modulus===&lt;br /&gt;
In the context of public key cryptography, a value by which all other values are reduced. That is, if a number is bigger than the modulus, the value of the number is considered to be the same as if the number were the remainder after dividing the number by the modulus.&lt;br /&gt;
==N==&lt;br /&gt;
===Near-collision resistance===&lt;br /&gt;
Given a plaintext value and the corresponding hash value, it should be computationally unfeasible to find a second plaintext value that gives the same hash value.&lt;br /&gt;
===NIST===&lt;br /&gt;
The National Institute of Standards and Technology is a division of the U.S. Department of Commerce. NIST issues standards and guidelines, with the hope that they will be adopted by the computing community.&lt;br /&gt;
===Non-repudiation===&lt;br /&gt;
The capability of establishing that a message was signed by a particular entity. That is, a message is said to be non-repudiatable when a user sends it, and one can prove that the user sent it. In practice, cryptography can demonstrate that only particular key material was used to produce a message. There are always legal defenses such as stolen credentials or duress.&lt;br /&gt;
===Nonce===&lt;br /&gt;
A value used with a cryptographic algorithm that must be unique in order to maintain the security of the system. Generally, the uniqueness requirement holds only for a single key — meaning that a {key, nonce} pair should never be reused.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Initialization vector|Initialization vector]], [[#Salt|Salt]].&lt;br /&gt;
&lt;br /&gt;
==O==&lt;br /&gt;
===OCB mode===&lt;br /&gt;
See also: [[#Offset Code Book mode|Offset Code Book mode]].&lt;br /&gt;
===OCSP===&lt;br /&gt;
See also: Online Certificate Status Protocol.&lt;br /&gt;
===OCSP responder===&lt;br /&gt;
The server side software that answers OCSP requests.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Online Certificate Status Protocol|Online Certificate Status Protocol]].&lt;br /&gt;
===OFB mode===&lt;br /&gt;
See also: [[#Output Feedback mode|Output Feedback mode]].&lt;br /&gt;
===Offset Code Book mode===&lt;br /&gt;
A patented encryption mode for block ciphers that provides both secrecy and message integrity and is capable of doing so at high speeds.&lt;br /&gt;
===OMAC===&lt;br /&gt;
One-key CBC-MAC. A secure, efficient way for turning a block cipher into a message authentication code. It is an improvement of the CBC-MAC, which is not secure in the arbitrary case. Other CBC-MAC variants use multiple keys in order to fix the problem with CBC-MAC. OMAC uses a single key and still has appealing provable security properties.&lt;br /&gt;
===One-time pad===&lt;br /&gt;
A particular cryptographic system that is provably secure in some sense, but highly impractical, because it requires a bit of entropy for every bit of message.&lt;br /&gt;
===One-time password===&lt;br /&gt;
A password that is only valid once. Generally, such passwords are derived from some master secret — which is shared by an entity and an authentication server — and are calculated via a challenge-response protocol.&lt;br /&gt;
===One-way hash function===&lt;br /&gt;
A hash function, where it is computationally unfeasible to determine anything about the input from the output.&lt;br /&gt;
===Online Certificate Status Protocol===&lt;br /&gt;
A protocol for determining whether a digital certificate is valid in real time without using CRLs. This protocol (usually abbreviated OCSP) is specified in RFC 2560.&lt;br /&gt;
===Output Feedback mode===&lt;br /&gt;
A block cipher mode that turns a block cipher into a stream cipher. The mode works by continually encrypting the previous block of keystream. The first block of keystream is generated by encrypting an initialization vector.&lt;br /&gt;
==P==&lt;br /&gt;
===Padding===&lt;br /&gt;
Data added to a message that is not part of the message. For example, some block cipher modes require messages to be padded to a length that is evenly divisible by the block length of the cipher — i.e., the number of bytes that the cipher processes at once.&lt;br /&gt;
===PAM===&lt;br /&gt;
Pluggable Authentication Modules is a technology for abstracting out authentication at the host level. It is similar to SASL, but is a bit higher up in the network stack and tends to be a much easier technology to use, particularly for system administrators, who can configure authentication policies quite easily using PAM.&lt;br /&gt;
&lt;br /&gt;
See also: [[#SASL|SASL]].&lt;br /&gt;
===Partial collision resistance===&lt;br /&gt;
When it is unfeasible to find two arbitrary inputs to a hash function that produce similar outputs — i.e., outputs that differ in only a few bits.&lt;br /&gt;
===Passive attack===&lt;br /&gt;
See also: [[#Eavesdropping attack|Eavesdropping attack]].&lt;br /&gt;
&lt;br /&gt;
===Passphrase===&lt;br /&gt;
A synonym for “password,” meant to encourage people to use longer (it is hoped, more secure) values.&lt;br /&gt;
===Password===&lt;br /&gt;
A value that is used for authentication.&lt;br /&gt;
===PBKDF2===&lt;br /&gt;
Password-Based Key Derivation Function #2. An algorithm defined in PKCS #5 for deriving a random value from a password.&lt;br /&gt;
===PEM encoding===&lt;br /&gt;
A simple encoding scheme for cryptographic objects that outputs printable values (by Base 64 encoding a DER-encoded representation of the cryptographic object). The scheme was first introduced in Privacy Enhanced Mail, a defunct way of providing E-mail security.&lt;br /&gt;
===Perfect forward secrecy===&lt;br /&gt;
Ensuring that the compromise of a secret does not divulge information that could lead to the recovery of data protected prior to the compromise.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Forward secrecy|Forward secrecy]].&lt;br /&gt;
===PKCS #1===&lt;br /&gt;
Public Key Cryptography Standard #1. A standard from RSA Labs specifying how to use the RSA algorithm for encrypting and signing data.&lt;br /&gt;
===PKCS #1===&lt;br /&gt;
padding  This form of padding can encrypt messages up to 11 bytes smaller than the modulus size in bytes. You should not use this method for any purpose other than encrypting session keys or hash values.&lt;br /&gt;
===PKCS #10===&lt;br /&gt;
Describes a standard syntax for certification requests.&lt;br /&gt;
===PKCS #11===&lt;br /&gt;
Specifies a programming interface called Cryptoki for portable cryptographic devices of all kinds.&lt;br /&gt;
===PKCS #3===&lt;br /&gt;
Public Key Cryptography Standard #3. A standard from RSA Labs specifying how to implement the Diffie-Hellman key exchange protocol.&lt;br /&gt;
===PKCS #5===&lt;br /&gt;
Public Key Cryptography Standard #5. A standard from RSA Labs specifying how to derive cryptographic keys from a password.&lt;br /&gt;
===PKCS #7===&lt;br /&gt;
Public Key Cryptography Standard #7. A standard from RSA Labs specifying a generic syntax for data that may be encrypted or signed.&lt;br /&gt;
===PKI===&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]].&lt;br /&gt;
===Plaintext===&lt;br /&gt;
An unencrypted message.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Ciphertext|Ciphertext]].&lt;br /&gt;
===PMAC===&lt;br /&gt;
The MAC portion of the OCB block cipher mode. It is a patented way of turning a block cipher into a secure, parallelizable MAC.&lt;br /&gt;
===Precomputation attack===&lt;br /&gt;
Any attack that involves precomputing significant amounts of data in advance of opportunities to launch an attack. A dictionary attack is a common precomputation attack.&lt;br /&gt;
===Predictive modelling===&lt;br /&gt;
Predictive modelling is the process by which a model is created or chosen to try to best predict the probability of an outcome. In many cases the model is chosen on the basis of detection theory to try to guess the probability of a signal given a set amount of input data, for example given an email determining how likely that it is spam.&lt;br /&gt;
===Private key===&lt;br /&gt;
In a public key cryptosystem, key material that is bound tightly to an individual entity that must remain secret in order for there to be secure communication.&lt;br /&gt;
===Privilege separation===&lt;br /&gt;
A technique for trying to minimize the impact that a programming flaw can have, where operations requiring privilege are separated out into a small, independent component (hopefully audited with care). Generally, the component is implemented as an independent process, and it spawns off a non-privileged process to do most of the real work. The two processes keep open a communication link, speaking a simple protocol.&lt;br /&gt;
===PRNG===&lt;br /&gt;
See also: [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
===Pseudo-random number generator===&lt;br /&gt;
An algorithm that takes data and stretches it into a series of random-looking outputs. Cryptographic pseudo-random number generators may be secure if the initial data contains enough entropy. Many popular pseudo-random number generators are not secure.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Stream cipher|Stream cipher]].&lt;br /&gt;
&lt;br /&gt;
===Public key===&lt;br /&gt;
In a public key cryptosystem, the key material that can be published publicly without compromising the security of the system. Generally, this material must be published; its authenticity must be determined definitively.&lt;br /&gt;
===Public Key Infrastructure===&lt;br /&gt;
A system that provides a means for establishing trust as to what identity is associated with a public key. Some sort of Public Key Infrastructure (PKI) is necessary to give reasonable assurance that one is communicating securely with the proper party, even if that infrastructure is ad hoc”&lt;br /&gt;
==Q==&lt;br /&gt;
==R==&lt;br /&gt;
===RA===&lt;br /&gt;
See also: [[#Registration Authority|Registration Authority]].&lt;br /&gt;
===Race condition===&lt;br /&gt;
A class of error in environments that are multi-threaded or otherwise multi- tasking, where an operation is falsely assumed to be atomic. That is, if two operations overlap instead of being done sequentially, there is some risk of the resulting computation not being correct. There are many cases where such a condition can be security critical.&lt;br /&gt;
&lt;br /&gt;
See also: [[#TOCTOU problem|TOCTOU problem]].&lt;br /&gt;
===Randomness===&lt;br /&gt;
A measure of how unguessable data is.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Entropy|Entropy]].&lt;br /&gt;
===RC2===&lt;br /&gt;
A block cipher with variable key sizes and 64-bit blocks.&lt;br /&gt;
===RC4===&lt;br /&gt;
A widely used stream cipher that is relatively fast but with some significant problems. One practical problem is that it has a weak key setup algorithm, though this problem can be mitigated with care. Another more theoretical problem is that RC4’s output is easy to distinguish from a truly random stream of numbers. This problem indicates that RC4 is probably not a good long-term choice for data security.&lt;br /&gt;
===RC5===&lt;br /&gt;
A block cipher that has several tunable parameters.&lt;br /&gt;
===Registration Authority===&lt;br /&gt;
An organization that is responsible for validating the identity of entities trying to obtain credentials in a Public Key Infrastructure.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Certification Authority|Certification Authority]], [[#Public Key Infrastructure|Public Key Infrastructure]].&lt;br /&gt;
===Rekeying===&lt;br /&gt;
Changing a key in a cryptographic system.&lt;br /&gt;
===Related key attack===&lt;br /&gt;
A class of cryptographic attack where one takes advantage of known relationships between keys to expose information about the keys or the messages those keys are protecting.&lt;br /&gt;
===Revocation===&lt;br /&gt;
In the context of Public Key Infrastructure, the act of voiding a digital certificate.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]], [[#X.509 certificate|X.509 certificate]].&lt;br /&gt;
===RIPEMD-160===&lt;br /&gt;
A cryptographic hash function that is well regarded. It has a 160-bit output, and is a bit slower than SHA1.&lt;br /&gt;
===RMAC===&lt;br /&gt;
A construction for making a Message Authentication Code out of a block cipher. It is not generally secure in the way that OMAC is, and is generally considered not worth using due to the existence of better alternatives.&lt;br /&gt;
&lt;br /&gt;
See also: [[#OMAC|OMAC]].&lt;br /&gt;
===Rollback attack===&lt;br /&gt;
An attack where one forces communicating parties to agree on an insecure protocol version.&lt;br /&gt;
===Root certificate===&lt;br /&gt;
A certificate that is intrinsically trusted by entities in a Public Key Infrastructure — generally should be transported over a secure medium. Root certificates belong to a Certification Authority and are used to sign other certificates that are deemed to be valid. When a system tries to establish the validity of a certificate, one of the first things that should happen is that it should look for a chain of trust to a known, trusted root certificate. That is, if the certificate to be validated is not signed by a root, one checks the certificate(s) used to sign it to determine if those were signed by a root cert. Lather, rinse, repeat.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Public Key Infrastructure|Public Key Infrastructure]].&lt;br /&gt;
===Round===&lt;br /&gt;
In a block cipher, a group of operations applied as a unit that has an inverse that undoes the operation. Most block ciphers define a round operation and then apply that round operation numerous times — though often applying a different key for each round, where the round key is somehow derived from the base key.&lt;br /&gt;
===RSA===&lt;br /&gt;
A popular public key algorithm for encryption and digital signatures invented by Ron Rivest, Adi Shamir and Leonard Adleman. It is believed that, if factoring large numbers is computationally unfeasible, then RSA can be used securely in practice.&lt;br /&gt;
===RSASSA-PSS===&lt;br /&gt;
A padding standard defined in PKCS #1, used for padding data prior to RSA signing operations.&lt;br /&gt;
==S==&lt;br /&gt;
===S/Key===&lt;br /&gt;
A popular one-time password system.&lt;br /&gt;
&lt;br /&gt;
See also: [[#One-time password|One-time password]].&lt;br /&gt;
===S/MIME===&lt;br /&gt;
A protocol for secure electronic mail standardized by the IETF. It relies on standard X.509-based Public Key Infrastructure.&lt;br /&gt;
===SACL===&lt;br /&gt;
System Access Control List. In Windows, the part of an ACL that determines audit logging policy.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Access Control List|Access Control List]], [[#DACL|DACL]].&lt;br /&gt;
===Salt===&lt;br /&gt;
Data that can be public but is used to prevent against precomputation attacks.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Initialization vector|Initialization vector]], [[#Nonce|Nonce]].&lt;br /&gt;
===SASL===&lt;br /&gt;
The Simple Authentication and Security Layer, which is a method for adding authentication services to network protocols somewhat generically. It is also capable of providing key exchange in many circumstances.&lt;br /&gt;
===Secret key===&lt;br /&gt;
See also: [[#Symmetric key|Symmetric key]].&lt;br /&gt;
===Secure Socket Layer===&lt;br /&gt;
A popular protocol for establishing secure channels over a reliable transport, utilizing a standard X.509 Public Key Infrastructure for authenticating machines. This protocol has evolved into the TLS protocol, but the term SSL is often used to generically refer to both.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Transport Layer Security|Transport Layer Security]].&lt;br /&gt;
===Seed===&lt;br /&gt;
A value used to initialize a pseudo-random number generator.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Entropy|Entropy]], [[#Initialization vector|Initialization vector]], [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
&lt;br /&gt;
===Self-signed certificate===&lt;br /&gt;
A certificate signed by the private key associated with that certificate. In an X.509 Public Key Infrastructure, all certificates need to be signed. Since root certificates have no third-party signature to establish their authenticity, they are used to sign themselves. In such a case, trust in the certificate must be established by some other means.&lt;br /&gt;
===Serpent===&lt;br /&gt;
A modern block cipher with 128-bit blocks and variable-sized keys. A finalist in the AES competition, Serpent has a higher security margin by design than other candidates, and is a bit slower on typical 32-bit hardware as a result.&lt;br /&gt;
&lt;br /&gt;
See also: [[#AES|AES]].&lt;br /&gt;
===Session key===&lt;br /&gt;
A randomly generated key used to secure a single connection and then discarded.&lt;br /&gt;
===SHA-256===&lt;br /&gt;
A cryptographic hash function from NIST with 256-bit message digests.&lt;br /&gt;
===SHA-384===&lt;br /&gt;
SHA-512 with a truncated digest (as specified by NIST).&lt;br /&gt;
===SHA-512===&lt;br /&gt;
A cryptographic hash function from NIST with 512-bit message digests.&lt;br /&gt;
===SHA1===&lt;br /&gt;
A fairly fast, well regarded hash function with 160-bit digests that has been standardized by the National Institute of Standards and Technology (NIST).&lt;br /&gt;
===Shared secret===&lt;br /&gt;
A value shared by parties that may wish to communicate, where the secrecy of that value is an important component of secure communications. Typically, a shared secret is either an encryption key, a MAC key, or some value used to derive such keys.&lt;br /&gt;
===Shatter attack===&lt;br /&gt;
A class of attack on the Windows event system. The Windows messaging system is fundamentally fragile from a security perspective because it allows for arbitrary processes to insert control events into the message queue without sufficient mechanisms for authentication. Sometimes messages can be used to trick other applications to execute malicious code.&lt;br /&gt;
===Single sign-on===&lt;br /&gt;
Single sign-on allows you to access all computing resources that you should be able to reach by using a single set of authentication credentials that are presented a single time per login session. Single sign-on is a notion for improved usability of security systems that can often increase the security exposure of a system significantly.&lt;br /&gt;
===Snooping attacks===&lt;br /&gt;
Attacks where data is read off a network while in transit without modifying or destroying the data.&lt;br /&gt;
===SNOW===&lt;br /&gt;
A very fast stream cipher that is patent-free and seems to have a very high security margin.&lt;br /&gt;
===SQL Injection===&lt;br /&gt;
[[SQL injection]] is a security vulnerability that occurs in the persistence/database layer of a web application. This vulnerability is derived from the incorrect escaping of variables embedded in SQL statements. It is in fact an instance of a more general class of vulnerabilities based on poor input validation and bad design that can occur whenever one programming or scripting language is embedded inside another.&lt;br /&gt;
&lt;br /&gt;
===SSL===&lt;br /&gt;
See also: [[#Secure Socket Layer|Secure Socket Layer]].&lt;br /&gt;
===Stack smashing===&lt;br /&gt;
Overwriting a return address on the program execution stack by exploiting a buffer overflow. Generally, the implication is that the return address gets replaced with a pointer to malicious code.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Buffer overflow|Buffer overflow]].&lt;br /&gt;
===Station-to-station protocol===&lt;br /&gt;
A simple variant of the Diffie-Hellman key exchange protocol that provides key agreement and authenticates each party to the other. This is done by adding digital signatures (which must be done carefully).&lt;br /&gt;
&lt;br /&gt;
See also: [[#Diffie-Hellman key exchange|Diffie-Hellman key exchange]].&lt;br /&gt;
===Stream cipher===&lt;br /&gt;
A pseudo-random number generator that is believed to be cryptographically strong and always produces the same stream of output given the same initial seed (i.e., key). Encrypting with a stream cipher consists of combining the plaintext with the keystream, usually via XOR.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Pseudo-random number generator|Pseudo-random number generator]].&lt;br /&gt;
===Strong collision resistance===&lt;br /&gt;
Strong collision resistance is a property that a hash function may have (and a good cryptographic hash function will have), characterized by it being computationally unfeasible to find two arbitrary inputs that yield the same output.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Hash function|Hash function]], [[#Weak collision resistance|Weak collision resistance]].&lt;br /&gt;
===Surreptitious forwarding===&lt;br /&gt;
An attack on some public key cryptosystems where a malicious user decrypts a digitally signed message and then encrypts the message using someone else’s public key: giving the end receiver the impression that the message was originally destined for them.&lt;br /&gt;
===Symmetric cryptography===&lt;br /&gt;
Cryptography that makes use of shared secrets as opposed to public keys.&lt;br /&gt;
===Symmetric key===&lt;br /&gt;
See also: [[#Shared secret|Shared secret]].&lt;br /&gt;
==T==&lt;br /&gt;
===Tag===&lt;br /&gt;
The result of applying a keyed message authentication code to a message.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]].&lt;br /&gt;
===Tamper-proofing===&lt;br /&gt;
See also: [[#Anti-tampering|Anti-tampering]].&lt;br /&gt;
===Threat model===&lt;br /&gt;
A representation of the system threats that are expected to be reasonable. This includes denoting what kind of resources an attacker is expected to have, in addition to what kinds of things the attacker may be willing to try to do. Sometimes called an architectural security assessment.&lt;br /&gt;
===Time of check, time of use problem===&lt;br /&gt;
See also: [[#TOCTOU problem|TOCTOU problem]].&lt;br /&gt;
===TLS===&lt;br /&gt;
See also: [[#Transport Layer Security|Transport Layer Security]].&lt;br /&gt;
===TMAC===&lt;br /&gt;
A two-keyed variant of the CBC-MAC that overcomes the fundamental limitation of that MAC.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]], [[#CBC-MAC|CBC-MAC]], [[#OMAC|OMAC]].&lt;br /&gt;
===TOCTOU problem===&lt;br /&gt;
Time-of-check, time-of-use race condition. A type of race condition between multiple processes on a file system. Generally what happens is that a single program checks some sort of property on a file, and then in subsequent instructions tries to use the resource if the check succeeded. The problem is that — even if the use comes immediately after the check — there is often some significant chance that a second process can invalidate the check in a malicious way. For example, a privileged program might check write privileges on a valid file, and the attacker can then replace that file with a symbolic link to the system password file.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Race condition|Race condition]].&lt;br /&gt;
===Transport Layer Security===&lt;br /&gt;
The successor to SSL, a protocol for establishing secure channels over a reliable transport, using a standard X.509 Public Key Infrastructure for authenticating machines. The protocol is standardized by the IETF.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Secure Socket Layer|Secure Socket Layer]].&lt;br /&gt;
===Triple DES===&lt;br /&gt;
A variant of the original Data Encryption Standard that doubles the effective security. Often abbreviated to 3DES. The security level of 3DES is still considered to be very high, but there are faster block ciphers that provide comparable levels of security — such as AES.&lt;br /&gt;
===Trojan===&lt;br /&gt;
See also: [[#Backdoor|Backdoor]].&lt;br /&gt;
===Trojan Horse===&lt;br /&gt;
See also: [[#Backdoor|Backdoor]].&lt;br /&gt;
===Trusted third party===&lt;br /&gt;
An entity in a system to whom entities must extend some implicit trust. For example, in a typical Public Key Infrastructure, the Certification Authority constitutes a trusted third party.&lt;br /&gt;
===Twofish===&lt;br /&gt;
A modern block cipher with 128-bit blocks and variable-sized keys.   A finalist in the AES competition; it is an evolution of the Blowfish cipher.&lt;br /&gt;
&lt;br /&gt;
See also: [[#AES|AES]], [[#Blowfish|Blowfish]].&lt;br /&gt;
==U==&lt;br /&gt;
===UMAC===&lt;br /&gt;
A secure MAC based on a set of universal hash functions that is extremely fast in software but so complex that there has never been a validated implementation.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Universal hash function|Universal hash function]].&lt;br /&gt;
===Universal hash function===&lt;br /&gt;
A keyed hash function that has ideal hash properties. In practice, the only practical functions of this nature are really &amp;amp;quot;almost universal&amp;amp;quot; hash functions, meaning they come very close to being ideal. Universal and near-universal hash functions are not cryptographically secure when used naively for message authentication but can be adapted to be secure for this purpose easily.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Cryptographic hash function|Cryptographic hash function]], [[#Hash function|Hash function]], [[#One-way hash function|One-way hash function]].&lt;br /&gt;
&lt;br /&gt;
==V==&lt;br /&gt;
===Validation===&lt;br /&gt;
The act of determining that data is sound. In security, generally used in the context of validating input.&lt;br /&gt;
==W==&lt;br /&gt;
===Weak collision resistance===&lt;br /&gt;
A property that a hash function may have (and a good cryptographic hash function will have), characterized by it being unfeasible to find a second input that produces the same output as a known input.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Hash function|Hash function]], [[#Strong collision resistance|Strong collision resistance]].&lt;br /&gt;
===Whitelist===&lt;br /&gt;
When performing input validation, the set of items that, if matched, results in the input being accepted as valid. If there is no match to the whitelist, then the input is considered invalid. That is, a whitelist uses a &amp;amp;quot;default deny&amp;amp;quot; policy.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Blacklist|Blacklist]], [[#Default deny|Default deny]].&lt;br /&gt;
&lt;br /&gt;
===Window of vulnerability===&lt;br /&gt;
The period of time in which a vulnerability can possibly be exploited.&lt;br /&gt;
&lt;br /&gt;
===[[What are web applications?]]===&lt;br /&gt;
&lt;br /&gt;
==X==&lt;br /&gt;
===X.509 certificate===&lt;br /&gt;
A digital certificate that complies with the X.509 standard (produced by ANSI).&lt;br /&gt;
===XCBC-MAC===&lt;br /&gt;
A three-key variant of the CBC-MAC that overcomes the fundamental limitation of that MAC.&lt;br /&gt;
&lt;br /&gt;
See also: [[#Message Authentication Code|Message Authentication Code]], [[#CBC-MAC|CBC-MAC]], [[#OMAC|OMAC]].&lt;br /&gt;
&lt;br /&gt;
===XSS===&lt;br /&gt;
See also: [[#Cross-site scripting|Cross-site scripting]].&lt;br /&gt;
==Y==&lt;br /&gt;
==Z==&lt;br /&gt;
&lt;br /&gt;
{{compactTOC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Security_Blitz&amp;diff=139590</id>
		<title>OWASP Security Blitz</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Security_Blitz&amp;diff=139590"/>
				<updated>2012-11-16T08:39:07Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: Replaced content with &amp;quot;P&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;P&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_PHP_Filters&amp;diff=139588</id>
		<title>OWASP PHP Filters</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_PHP_Filters&amp;diff=139588"/>
				<updated>2012-11-16T04:27:53Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Tutorial&amp;diff=139587</id>
		<title>Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Tutorial&amp;diff=139587"/>
				<updated>2012-11-16T04:20:44Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: /* Categories */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Editing the OWASP Wiki==&lt;br /&gt;
&lt;br /&gt;
OWASP is built on the MediaWiki platform. Anyone can create an account and make the OWASP wiki better. To create a new account, click on the [[Special:Userlogin|create an account or log in]] link at the top-right of every page. When you make edits, please use the &amp;quot;preview&amp;quot; feature to make sure your changes are final, and then don't forget to save. Use the &amp;quot;edit summary&amp;quot; to describe what you did and why.&lt;br /&gt;
&lt;br /&gt;
Writing OWASP wiki articles is a bit different from writing on a standard word processor. Instead of a strict &amp;quot;what you see is what you get&amp;quot; approach, wiki uses simple text codes for formatting. The approach is similar to that used in writing HTML for web pages, but the codes are simpler. The [http://meta.wikimedia.org/wiki/Help:Contents MediaWiki help] is a great place to start learning about all the features available.  Another option for you to investigate is [http://www.openoffice.org OpenOffice] as you can edit pages and export them into MediaWiki format.&lt;br /&gt;
&lt;br /&gt;
==Style guidelines==&lt;br /&gt;
&lt;br /&gt;
In general, we follow the [http://en.wikipedia.org/wiki/Wikipedia:Tutorial_%28Keep_in_mind%29 editing guidelines] of Wikipedia. You should ensure that your additions to OWASP reflect a &amp;quot;Neutral Point of View&amp;quot; and a positive collaboration in the interest of better application security. Also, please remember that OWASP is not the right place for disclosure of actual vulnerabilities. The bugtraq or full-disclosure mailing lists are appropriate venues for that sort of thing.&lt;br /&gt;
&lt;br /&gt;
==Content guidelines==&lt;br /&gt;
&lt;br /&gt;
OWASP is not a place to promote commercial products or services. We strive to provide unbiased information that will enable organizations and individuals to build and operate more secure applications. Information about commercial products is allowed, but MUST follow these guidelines. Violations of these policies should be reported to [mailto:owasp@owasp.org owasp@owasp.org].&lt;br /&gt;
* Product discussions must mention all comparable tools available&lt;br /&gt;
* &amp;quot;Equal time&amp;quot; must be given to all tools discussed&lt;br /&gt;
* Unsubstantiable claims will not be allowed&lt;br /&gt;
* Discussions of products should include both good and bad&lt;br /&gt;
* Representatives of product companies must disclose their affiliation&lt;br /&gt;
&lt;br /&gt;
==Bold and italics==&lt;br /&gt;
Bold and italics are created like this:&lt;br /&gt;
*&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;''italics''&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; appears as ''italics''. (2 apostrophes on both sides)&lt;br /&gt;
*&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;'''bold'''&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; appears as '''bold'''. (3 apostrophes on both sides)&lt;br /&gt;
&lt;br /&gt;
==Headings and subheadings==&lt;br /&gt;
Headings and subheadings are an easy way to improve the organization of an article. If you can see two or more distinct topics being discussed, you can break up the article by inserting a heading for each section.&lt;br /&gt;
&lt;br /&gt;
Headings can be created like this:&lt;br /&gt;
*&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;==Top level heading==&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; (2 equals signs)&lt;br /&gt;
*&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;===Subheading===&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; (3 equals signs)&lt;br /&gt;
*&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;====Another level down====&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; (4 equals signs)&lt;br /&gt;
&lt;br /&gt;
==Discussion pages==&lt;br /&gt;
&lt;br /&gt;
There are &amp;quot;discussion&amp;quot; pages (also known as &amp;quot;talk&amp;quot; pages) associated with every article at OWASP. You can leave questions, comments, or ideas on these pages for other authors to review. These pages are a good place to propose ideas or discuss possible approaches to problems. You should &amp;quot;sign&amp;quot; your comments by adding four tilde characters (&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;) after your comment. Use section headings for different topic areas.&lt;br /&gt;
&lt;br /&gt;
See [http://meta.wikimedia.org/wiki/Help:Wiki_markup_examples Wiki markup examples] for more examples&lt;br /&gt;
&lt;br /&gt;
==Internal links==&lt;br /&gt;
One thing that makes the OWASP wiki useful (and highly habit-forming) is extensive cross-listing by internal links.  These easily-created links allow users to access information related to the article they're reading.&lt;br /&gt;
&lt;br /&gt;
The easiest way to learn when to link is to look at OWASP (or Wikipedia) articles for examples.  If you're trying to decide whether to make a link or not, ask yourself &amp;quot;If I were reading this article, would the link be useful to me?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When you want to make a link to another OWASP page (called a &amp;lt;em&amp;gt;wiki link&amp;lt;/em&amp;gt;) you have to put it in double square brackets, like this:&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;[[Threats]]&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use words other than the article title as the text of the link, you can do so by adding the &amp;quot;|&amp;quot; divider followed by the alternative name. For example, if you wanted to make a link to the [[Main Page]], but wanted it to say &amp;quot;OWASP home&amp;quot; you would write it as such:&lt;br /&gt;
:&amp;lt;tt&amp;gt;To view the article, &amp;lt;nowiki&amp;gt;[[Main Page|OWASP home]]&amp;lt;/nowiki&amp;gt;...&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Images and files==&lt;br /&gt;
You can upload certain types of documents using the '''Upload File''' option under '''Toolbox''' in the lower lefthand part of the linkbar at the left side of any OWASP page. But you need to be logged in to see this option. We allow common image formats, Word documents, PowerPoint presentations, and PDF files. Choose your filename carefully, as you'll use that to reference the document from &lt;br /&gt;
the rest of the site. Note that MediaWiki uses the term &amp;quot;image&amp;quot; to mean any file.&lt;br /&gt;
&lt;br /&gt;
Use this syntax to reference files from your page ...&lt;br /&gt;
&lt;br /&gt;
* Single click to get &amp;quot;image&amp;quot; page:&lt;br /&gt;
      &amp;lt;nowiki&amp;gt;[[Image:filename.ppt|PUT YOUR TITLE HERE]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Single click to show file:&lt;br /&gt;
      &amp;lt;nowiki&amp;gt;[http://www.owasp.org/index.php/Image:filename.ppt PUT YOUR TITLE HERE]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
OWASP makes extensive use of categories. Categories are used to &amp;quot;tag&amp;quot; articles in OWASP so that people can find them. An article can be in lots of categories at the same time. For example, an article discussing a flaw in the Java sandbox might be in the [[:Category:Java]], [[:Category:Vulnerability]], and [[:Category:Access Control]] categories at the same time.&lt;br /&gt;
&lt;br /&gt;
To add a category to an article, just add &amp;lt;nowiki&amp;gt;[[archives:XXX]]&amp;lt;/nowiki&amp;gt; to the end of the article, replacing the XXX with the name of the appropriate category.&lt;br /&gt;
&lt;br /&gt;
To reference a Category page, simply put a colon (''':''') at the beginning of the &amp;quot;Category&amp;quot; tag, like this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;[[:Category:Principles]]&amp;lt;/facebook&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''It is very important to put in the correct categories so that other people can easily find your work.''' The best way to find which categories to put in is to look at pages on similar subjects, and check which categories they use. For example if you write an article about a type of tree, you may look at an article on another type of tree to see which categories could be appropriate.&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Advertising&amp;diff=139551</id>
		<title>Advertising</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Advertising&amp;diff=139551"/>
				<updated>2012-11-15T19:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: /* Banner Ad */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Advertising at OWASP==&lt;br /&gt;
&lt;br /&gt;
OWASP is a platform for the software security community. OWASP offers advertising to help support our operational mission.&lt;br /&gt;
Disclaimer: Ads are not endorsements and reflect the messages of the advertiser only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A banner advertisement on OWASP Foundation is a great way to raise awareness&lt;br /&gt;
&lt;br /&gt;
 2012 - $2,500 USD per month&lt;br /&gt;
 2012 - 2,000 Euros per month&lt;br /&gt;
&lt;br /&gt;
ntact us] if you would like to learn more.&lt;br /&gt;
&lt;br /&gt;
=Audience=&lt;br /&gt;
&lt;br /&gt;
The owasp.org web site gets [http://www.alexa.com/siteinfo/owasp.org+us-cert.gov+sans.org+webappsec.org more traffic] than most IT security related websites. OWASP is dedicated to securing software applications and mainly attracts developers, system architects, project managers, and security specialists who are working in the field or looking to understand more about the topic.&lt;br /&gt;
&lt;br /&gt;
We value all who visit our site and while we need to sell advertising to maintain our site, we are respectful of our readers. We will never sell or give away our registration lists under any circumstances. The following chart displays the percentage of all users on the internet who access OWASP on a daily basis:&lt;br /&gt;
&lt;br /&gt;
'''356,565 visits In May came from 206 countries/territories'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;50&amp;quot; | Month&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;225&amp;quot; | Visitors&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;225&amp;quot; | Unique Visitors&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;225&amp;quot; | Page Views&lt;br /&gt;
|-&lt;br /&gt;
| May || 356,565 || 228,107 || 803,276&lt;br /&gt;
|-&lt;br /&gt;
| April || 331,313 || 208,928 || 754,777&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
55.55% New Visits&lt;br /&gt;
&lt;br /&gt;
OWASP offers a 468x60 banner ad space on the home page and local chapter pages. We allow up to a maximum of 3 advertisers to purchase a spot in the rotation.&lt;br /&gt;
&lt;br /&gt;
OWASP adopts the following policy.&lt;br /&gt;
&lt;br /&gt;
* The OWASP Board of Directors reserves the right to refuse any advert for any reason by vote.&lt;br /&gt;
* All adverts will be marked as Paid Advertisements&lt;br /&gt;
* All banner adverts must be exactly 468 x 60 pixels and use no more than 256 colors&lt;br /&gt;
* All banner adverts must not simulate flashing text or images&lt;br /&gt;
* All banner adverts must use no more than three rotating images (gif) which must not rotate more frequently than 5 seconds per image&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://sl.owasp.org/contactus Contact us] if you would like to learn more.&lt;br /&gt;
&lt;br /&gt;
==Newsletter Advertising==&lt;br /&gt;
&lt;br /&gt;
OWASP publishes a quarterly newsletter and will offer a limited number of advertisments to be placed in this newsletter.&lt;br /&gt;
&lt;br /&gt;
* Distribution Method:  The newsletter is initially pushed out via email to over 25,000 OWASP Members and participants.  It is posted on our website along with prior versions.  The newsletter is also available in hardcopy format for print on demand&lt;br /&gt;
&lt;br /&gt;
* Advertising specs:&lt;br /&gt;
&lt;br /&gt;
* Advertising Prices:&lt;br /&gt;
&lt;br /&gt;
[http://sl.owasp.org/contactus Contact us] if you would like to learn more.&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
For more information on advertising with the OWASP Foundation please [http://sl.owasp.org/contactus contact us] to get started today.&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Zed_Attack_Proxy_Project&amp;diff=139550</id>
		<title>Projects/OWASP Zed Attack Proxy Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Zed_Attack_Proxy_Project&amp;diff=139550"/>
				<updated>2012-11-15T19:46:17Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Zed_Attack_Proxy_Project/GPC/Assessment/ZAP_1.3.0&amp;diff=139549</id>
		<title>Projects/OWASP Zed Attack Proxy Project/GPC/Assessment/ZAP 1.3.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Zed_Attack_Proxy_Project/GPC/Assessment/ZAP_1.3.0&amp;diff=139549"/>
				<updated>2012-11-15T19:42:51Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;Release Rating&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| criteria_version= 2&lt;br /&gt;
&lt;br /&gt;
| &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category: Release Assessment]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:Riskfactors.JPG&amp;diff=139548</id>
		<title>File:Riskfactors.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:Riskfactors.JPG&amp;diff=139548"/>
				<updated>2012-11-15T19:19:41Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Application_Threat_Modeling&amp;diff=139547</id>
		<title>Application Threat Modeling</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Application_Threat_Modeling&amp;diff=139547"/>
				<updated>2012-11-15T19:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Threat modeling is an approach for analyzing the security of an application. It is a structured approach that enables you to identify, quantify, and address the security risks associated with an application. Threat modeling is not an approach to reviewing code, but it does complement the security code review process. The inclusion of threat modeling in the SDLC can help to ensure that applications are being developed with security built-in from the very beginning. This, combined with the documentation produced as part of the threat modeling process, can give the reviewer a greater understanding of the system. This allows the reviewer to see where the entry points to the application are and the associated threats with each entry point. The concept of threat modeling is not new but there has been a clear mindset change in recent years. Modern threat modeling looks at a system from a potential attacker's perspective, as opposed to a defender's viewpoint. Microsoft have been strong advocates of the process over the past number of years. They have made threat modeling a core component of their SDLC, which they claim to be one of the reasons for the increased security of their products in recent years. &lt;br /&gt;
&lt;br /&gt;
When source code analysis is performed outside the SDLC, such as on existing applications, the results of the threat modeling help in reducing the complexity of the source code analysis by promoting an in-depth first approach vs. breadth first approach. Instead of reviewing all source code with equal focus, you can prioritize the security code review of components whose threat modeling has ranked with high risk threats. &lt;br /&gt;
&lt;br /&gt;
The threat modeling process can be decomposed into 3 high level steps:&lt;br /&gt;
&lt;br /&gt;
'''Step 1:''' Decompose the Application. &lt;br /&gt;
The first step in the threat modeling process is concerned with gaining an understanding of the application and how it interacts with external entities. This involves creating use-cases to understand how the application is used, identifying entry points to see where a potential attacker could interact with the application, identifying assets i.e. items/areas that the attacker would be interested in, and identifying trust levels which represent the access rights that the application will grant to external entities. This information is documented in the Threat Model document and it &lt;br /&gt;
&lt;br /&gt;
'''Step 2:''' Determine and rank threats.&lt;br /&gt;
Critical to the identification of threats is using a threat categorization methodology. A threat categorization such as STRIDE can be used, or the Application Security t defines threat categories such Authentication, Authorization, Configuration Management, Data Protection in Storage and Transit, Data Validation, Exception Management. The goal of the threat categorization identify threats  the defensive perspective roduced in step 1 help toat targets from the attacker's perspective, such as data sources, processes, se threats can be identified further as the roots for threat trees; there is one tree for each hreats as weaknesses of security controls for such threats. Common threat-lists with examples can help in the identification of such threats. Use and abuse cases can illustrate how existing protective measures could be bypassed, or where a lack of such protection exists. The determination of the security risk for each threat can be determined using a value-based risk model such as DREAD or a less subjective qualitative risk model based upon general risk factors (e.g. likelihood and impact).&lt;br /&gt;
&lt;br /&gt;
'''Step 3:''' Determine countermeasures and mitigation.&lt;br /&gt;
A lack of protection against a threat might indicate a vulnerability whose risk exposure could be mitigated with the implementation of a countermeasure. Such countermeasures can be identified using threat-countermeasure mapping lists. Once a risk ranking is assigned to the threats, it is possible to sort threats from the highest to the lowest risk, and prioritize the mitigation effort, such as by responding to such threats by applying the identified countermeasures. The risk mitigation strategy might involve evaluating these  that they pose and reducing  the risk. Other options might include taking the risk, assuming the business impact is acceptable because of compensating controls, informing the user of the threat, removing the risk posed by the threat completely, or the least preferable option, that is, to do nothing. &lt;br /&gt;
&lt;br /&gt;
Each of the above steps are documented as they are carried out. The resulting document is the threat model for the application. This guide will use an example to help explain the concepts behind threat modeling. The same example will be used throughout each of the 3 steps as a learning aid. The example that will be used is a college library website. At the end of the guide we will have produced the threat model for the college library website. Each of the steps in the threat modeling process are described in detail below.&lt;br /&gt;
&lt;br /&gt;
== Decompose the Application ==&lt;br /&gt;
The goal of this step is to gain an understanding of the application and how it interacts with external entities. This goal is achieved by information gathering and documentation. The information gathering process is carried out using a clearly defined structure, which ensures the correct information is collected. This structure also defines how the information should be documented to produce the Threat Model. &lt;br /&gt;
&lt;br /&gt;
==Threat Model Information==&lt;br /&gt;
The first item in the threat model is the information relating to the threat model. &lt;br /&gt;
This must include the the following:&lt;br /&gt;
&lt;br /&gt;
# '''Application Name''' - The name of the application.&lt;br /&gt;
# '''Application Version''' - The version of the application.&lt;br /&gt;
# '''Description''' - A high level description of the application.&lt;br /&gt;
# '''Document Owner''' - The owner of the threat modeling document. &lt;br /&gt;
# '''Participants''' - The participants involved in the threat modeling process for this application.&lt;br /&gt;
# '''Reviewer''' - The reviewer(s) of the threat model.&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Category:FIXME|the list above includes an Application name, but the example does not have one]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Threat Model Information&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Application Version:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt; Description:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The college library website is the first implementation of a website to provide librarians and library patrons (students and college staff) with online services. &lt;br /&gt;
As this is the first implementation of the website, the functionality will be limited. There will be three users of the application: &amp;lt;br/&amp;gt;&lt;br /&gt;
1. Students&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Staff&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Librarians&amp;lt;br/&amp;gt;&lt;br /&gt;
Staff and students will be able to log in and search for books, and staff members can request books. Librarians will be able to log in, add books, add users, and search for books.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Document Owner:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;David Lowry&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Participants:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;David Rook&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;Reviewer:&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Eoin Keary&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External Dependencies==&lt;br /&gt;
External dependencies are items external to the code of the application that may pose a threat to the application. These items are typically still within the control of the organization, but possibly not within the control of the development team. The first area to look at when investigating external dependencies is how the application will be deployed in a production environment, and what are the requirements surrounding this. This involves looking at how the application is or is not intended to be run. For example if the application is expected to be run on a server that has been hardened to the organization's hardening standard and it is expected to sit behind a firewall, then this information should be documented in the external dependencies section. External dependencies should be documented as follows:&lt;br /&gt;
&lt;br /&gt;
# '''ID''' - A unique ID assigned to the external dependency.&lt;br /&gt;
# '''Description''' - A textual description of the external dependency.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;External Dependencies&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The college library website will run on a Linux server running Apache.  This server will be hardened as per the college's server hardening standard. This includes the application of the latest operating system and application security patches.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database server will be MySQL and it will run on a Linux server. This server will be hardened as per the college's server hardening standard. This will include the application of the lastest operating system and application security patches.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The connection between the Web Server and the database server will be over a private network.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The Web Server is behind a firewall and the only communication available is TLS.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Entry Points==&lt;br /&gt;
Entry points define the interfaces through which potential attackers can interact with the application or supply it with data. In order for a potential attacker to attack an application, entry points must exist. Entry points in an application can be layered, for example each web page in a web application may contain multiple entry points. Entry points should be documented as follows: &lt;br /&gt;
&lt;br /&gt;
#  '''ID''' - A unique ID assigned to the entry point. This will be used to cross reference the entry point with any threats or vulnerabilities that are identified. In the case of layer entry points, a major.minor notation should be used.&lt;br /&gt;
# '''Name''' - A descriptive name identifying the entry point and its purpose.&lt;br /&gt;
# '''Description''' - A textual description detailing the interaction or processing that occurs at the entry point.&lt;br /&gt;
# '''Trust Levels''' - The level of access required at the entry point is documented here. These will be cross referenced with the trusts levels defined later in the document.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Entry Points&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;45%&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;25%&amp;quot;&amp;gt;Trust Levels&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;HTTPS Port&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The college library website will be only be accessible via TLS. All pages within the college library website are layered on this entry point.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;(1) Anonymous Web User&amp;lt;br/&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Library Main Page&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The splash page for the college library website is the entry point for all users.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;(1) Anonymous Web User&amp;lt;br/&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login Page&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Students, faculty members and librarians must log in to the college library website before they can carry out any of the use cases.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;(1) Anonymous Web User&amp;lt;br/&amp;gt;&lt;br /&gt;
(2) User with Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.2.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login Function&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The login function accepts user supplied credentials and compares them with those in the database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(3) User with Invalid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Search Entry Page&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The page used to enter a search query.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assets==&lt;br /&gt;
The system must have something that the attacker is interested in; these items/areas of interest are defined as assets. Assets are essentially threat targets, i.e. they are the reason threats will exist. Assets can be both physical assets and abstract assets. For example, an asset of an application might be a list of clients and their personal information; this is a physical asset. An abstract asset might be the reputation of an organsation. Assets are documented in the threat model as follows: &lt;br /&gt;
&lt;br /&gt;
# '''ID''' - A unique ID is assigned to identify each asset. This will be used to cross reference the asset with any threats or vulnerabilities that are identified.&lt;br /&gt;
# '''Name''' - A descriptive name that clearly identifies the asset.&lt;br /&gt;
# '''Description''' - A textual description of what the asset is and why it needs to be protected.&lt;br /&gt;
# '''Trust Levels''' - The level of access required to access the entry point is documented here. These will be cross referenced with the trust levels defined in the next step.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Assets&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;55%&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;25%&amp;quot;&amp;gt;Trust Levels&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Library Users and Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Assets relating to students, faculty members, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Login Details&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The login credentials that a student or a faculty member will use to log into the College Library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian &amp;lt;br/&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Librarian Login Details&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The login credentials that a Librarian will use to log into the College Library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(4) Librarian &amp;lt;br/&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Personal Data&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The College Library website will store personal information relating to the students, faculty members, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(4) Librarian &amp;lt;br/&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(6) Website Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;System&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Assets relating to the underlying system.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Availability of College Library Website&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The College Library website should be available 24 hours a day and can be accessed by all students, college faculty members, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(6) Website Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Execute Code as a Web Server User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the ability to execute source code on the web server as a web server user.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(6) Website Administrator &amp;lt;br/&amp;gt;&lt;br /&gt;
(7) Web Server User Process &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Execute SQL as a Database Read User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the ability to execute SQL select queries on the database, and thus retrieve any information stored within the College Library database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
(8) Database Read User&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Execute SQL as a Database Read/Write User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the ability to execute SQL. Select, insert, and update queries on the database and thus have read and write access to any information stored within the College Library database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
(9) Database Read/Write User&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Website&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Assets relating to the College Library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login Session&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the login session of a user to the College Library website. This user could be a student, a member of the college faculty, or a Librarian.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(2) User with Valid Login Credentials&amp;lt;br/&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Access to the Database Server&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Access to the database server allows you to administer the database, giving you full access to the database users and all data contained within the database.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(5) Database Server Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ability to Create Users&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The ability to create users would allow an individual to create new users on the system. These could be student users, faculty member users, and librarian users.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(4) Librarian&amp;lt;br/&amp;gt;&lt;br /&gt;
(6) Website Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Access to Audit Data&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The audit data shows all audit-able events that occurred within the College Library application by students, staff, and librarians.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
(6) Website Administrator&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trust Levels==&lt;br /&gt;
Trust levels represent the access rights that the application will grant to external entities. The trust levels are cross referenced with the entry points and assets. This allows us to define the access rights or privileges required at each entry point, and those required to interact with each asset. Trust levels are documented in the threat model as follows: &lt;br /&gt;
&lt;br /&gt;
# '''ID''' - A unique number is assigned to each trust level. This is used to cross reference the trust level with the entry points and assets.&lt;br /&gt;
# '''Name''' - A descriptive name that allows you to identify the external entities that have been granted this trust level.&lt;br /&gt;
# '''Description''' - A textual description of the trust level detailing the external entity who has been granted the trust level.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;Trust Levels&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;25%&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;70%&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Anonymous Web User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A user who has connected to the college library website but has not provided valid credentials.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User with Valid Login Credentials&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A user who has connected to the college library website and has logged in using valid login credentials.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User with Invalid Login Credentials&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A user who has connected to the college library website and is attempting to log in using invalid login credentials.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Librarian&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The librarian can create users on the library website and view their personal information.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Database Server Administrator&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database server administrator has read and write access to the database that is used by the college library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Website Administrator&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The Website administrator can configure the college library website.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Web Server User Process&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is the process/user that the web server executes code as and authenticates itself against the database server as.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Database Read User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database user account used to access the database for read access.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Database Read/Write User&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The database user account used to access the database for read and write access.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Data Flow Diagrams==&lt;br /&gt;
All of the information collected allows us to accurately model the application through the use of Data Flow Diagrams (DFDs). The DFDs will allow us to gain a better understanding of the application by providing a visual representation of how the application processes data. The focus of the DFDs is on how data moves through the application and what happens to the data as it moves. DFDs are hierarchical in structure, so they can be used to decompose the application into subsystems and lower-level subsystems. The high level DFD will allow us to clarify the scope of the application being modeled. The lower level iterations will allow us to focus on the specific processes involved when processing specific data. There are a number of symbols that are used in DFDs for threat modeling. These are described below:&lt;br /&gt;
&lt;br /&gt;
'''External Entity'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The external entity shape is used to represent any entity outside the application that interacts with the application via an entry point.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_external_entity.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Process'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The process shape represents a task that handles data within the application. The task may process the data or perform an action based on the data.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_process.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Multiple Process'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The multiple process shape is used to present a collection of subprocesses. The multiple process can be broken down into its subprocesses in another DFD.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_multiple_process.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Data Store'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The data store shape is used to represent locations where data is stored. Data stores do not modify the data, they only store data.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_data_store.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Flow'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The data flow shape represents data movement within the application. The direction of the data movement is represented by the arrow.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_data_flow.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Privilege Boundary'''&amp;lt;br/&amp;gt;&lt;br /&gt;
The privilege boundary shape is used to represent the change of privilege levels as the data flows through the application.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:DFD_privilge_boundary.gif]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&amp;lt;br/&amp;gt; '''Data Flow Diagram for the College Library Website'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Data flow1.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''User Login Data Flow Diagram for the College Library Website'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:Data flow2.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determine and Rank Threats ==&lt;br /&gt;
===Threat Categorization===&lt;br /&gt;
The first step in the determination of threats is adopting a threat categorization. A threat categorization provides a set of threat categories with corresponding examples so that threats can be systematically identified in the application in a structured and repeatable manner. &lt;br /&gt;
&lt;br /&gt;
====STRIDE====&lt;br /&gt;
A threat categorization such as STRIDE is useful in the identification of threats by classifying attacker goals such as:&lt;br /&gt;
*Spoofing&lt;br /&gt;
*Tampering&lt;br /&gt;
*Repudiation&lt;br /&gt;
*Information Disclosure&lt;br /&gt;
*Denial of Service&lt;br /&gt;
*Elevation of Privilege.&lt;br /&gt;
&lt;br /&gt;
A threat list of generic threats organized in these categories with examples and the affected security controls is provided in the following table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;STRIDE Threat List&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Examples&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Security Control&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Spoofing&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action aimed to illegally access and use another user's credentials, such as username and password.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authentication&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tampering&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action aimed to maliciously change/modify persistent data, such as persistent data in a database, and the alteration of data in transit between two computers over an open network, such as the Internet.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Integrity&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Repudiation&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action aimed to perform illegal operations in a system that lacks the ability to trace the prohibited operations.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Non-Repudiation&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Information disclosure&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat action to read a file that one was not granted access to, or to read data in transit. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Confidentiality&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#dddddd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denial of service&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat aimed to deny access to valid users, such as by making a web server temporarily unavailable or unusable. &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Availability&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elevation of privilege&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Threat aimed to gain privileged access to resources for gaining unauthorized access to information or to compromise a system.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authorization&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security Controls==&lt;br /&gt;
Once the basic threat agents and business impacts are understood, the review team should try to identify the set of controls that could prevent these threat agents from causing those impacts.  The primary focus of the code review should be to ensure that these security controls are in place, that they work properly, and that they are correctly invoked in all the necessary places. The checklist below can help to ensure that all the likely risks have been considered.&lt;br /&gt;
&lt;br /&gt;
'''Authentication:'''&lt;br /&gt;
*Ensure all internal and external connections (user and entity) go through an appropriate and adequate form of authentication. Be assured that this control cannot be bypassed. &lt;br /&gt;
*Ensure all pages enforce the requirement for authentication. &lt;br /&gt;
*Ensure that whenever authentication credentials or any other sensitive information is passed, only accept the information via the HTTP “POST” method and will not accept it via the HTTP “GET” method. &lt;br /&gt;
*Any page deemed by the business or the development team as being outside the scope of authentication should be reviewed in order to assess any possibility of security breach. &lt;br /&gt;
*Ensure that authentication credentials do not traverse the wire in clear text form. &lt;br /&gt;
*Ensure development/debug backdoors are not present in production code. &lt;br /&gt;
&lt;br /&gt;
'''Authorization: '''&lt;br /&gt;
*Ensure that there are authorization mechanisms in place. &lt;br /&gt;
*Ensure that the application has clearly defined the user types and the rights of said users. &lt;br /&gt;
*Ensure there is a least privilege stance in operation. &lt;br /&gt;
*Ensure that the Authorization mechanisms work properly, fail securely, and cannot be circumvented. &lt;br /&gt;
*Ensure that authorization is checked on every request. &lt;br /&gt;
*Ensure development/debug backdoors are not present in production code. &lt;br /&gt;
&lt;br /&gt;
'''Cookie Management: '''&lt;br /&gt;
*Ensure that sensitive information is not comprised. &lt;br /&gt;
*Ensure that unauthorized activities cannot take place via cookie manipulation. &lt;br /&gt;
*Ensure that proper encryption is in use. &lt;br /&gt;
*Ensure secure flag is set to prevent accidental transmission over “the wire” in a non-secure manner. &lt;br /&gt;
*Determine if all state transitions in the application code properly check for the cookies and enforce their use. &lt;br /&gt;
*Ensure the session data is being validated. &lt;br /&gt;
*Ensure cookies contain as little private information as possible. &lt;br /&gt;
*Ensure entire cookie is encrypted if sensitive data is persisted in the cookie. &lt;br /&gt;
*Define all cookies being used by the application, their name, and why they are needed. &lt;br /&gt;
&lt;br /&gt;
'''Data/Input Validation: '''&lt;br /&gt;
*Ensure that a DV mechanism is present. &lt;br /&gt;
*Ensure all input that can (and will) be modified by a malicious user such as HTTP headers, input fields, hidden fields, drop down lists, and other web components are properly validated. &lt;br /&gt;
*Ensure that the proper length checks on all input exist. &lt;br /&gt;
*Ensure that all fields, cookies, http headers/bodies, and form fields are validated. &lt;br /&gt;
*Ensure that the data is well formed and contains only known good chars if possible. &lt;br /&gt;
*Ensure that the data validation occurs on the server side. &lt;br /&gt;
*Examine where data validation occurs and if a centralized model or decentralized model is used. &lt;br /&gt;
*Ensure there are no backdoors in the data validation model. &lt;br /&gt;
*'''Golden Rule: All external input, no matter what it is, is examined and validated. '''&lt;br /&gt;
&lt;br /&gt;
'''Error Handling/Information leakage: '''&lt;br /&gt;
*Ensure that all method/function calls that return a value have proper error handling and return value checking. &lt;br /&gt;
*Ensure that exceptions and error conditions are properly handled. &lt;br /&gt;
*Ensure that no system errors can be returned to the user. &lt;br /&gt;
*Ensure that the application fails in a secure manner. &lt;br /&gt;
*Ensure resources are released if an error occurs. &lt;br /&gt;
&lt;br /&gt;
'''Logging/Auditing: '''&lt;br /&gt;
*Ensure that no sensitive information is logged in the event of an error. &lt;br /&gt;
*Ensure the payload being logged is of a defined maximum length and that the logging mechanism enforces that length. &lt;br /&gt;
*Ensure no sensitive data can be logged; e.g. cookies, HTTP “GET” method, authentication credentials. &lt;br /&gt;
*Examine if the application will audit the actions being taken by the application on behalf of the client (particularly data manipulation/Create, Update, Delete (CUD) operations). &lt;br /&gt;
*Ensure successful and unsuccessful authentication is logged. &lt;br /&gt;
*Ensure application errors are logged. &lt;br /&gt;
*Examine the application for debug logging with the view to logging of sensitive data. &lt;br /&gt;
&lt;br /&gt;
'''Cryptography: '''&lt;br /&gt;
*Ensure no sensitive data is transmitted in the clear, internally or externally. &lt;br /&gt;
*Ensure the application is implementing known good cryptographic methods. &lt;br /&gt;
&lt;br /&gt;
'''Secure Code Environment: '''&lt;br /&gt;
*Examine the file structure. Are any components that should not be directly accessible available to the user?&lt;br /&gt;
*Examine all memory allocations/de-allocations. &lt;br /&gt;
*Examine the application for dynamic SQL and determine if it is vulnerable to injection. &lt;br /&gt;
*Examine the application for “main()” executable functions and debug harnesses/backdoors.&lt;br /&gt;
*Search for commented out code, commented out test code, which may contain sensitive information. &lt;br /&gt;
*Ensure all logical decisions have a default clause. &lt;br /&gt;
*Ensure no development environment kit is contained on the build directories. &lt;br /&gt;
*Search for any calls to the underlying operating system or file open calls and examine the error possibilities. &lt;br /&gt;
&lt;br /&gt;
'''Session Management: '''&lt;br /&gt;
*Examine how and when a session is created for a user, unauthenticated and authenticated. &lt;br /&gt;
*Examine the session ID and verify if it is complex enough to fulfill requirements regarding strength. &lt;br /&gt;
*Examine how sessions are stored: e.g. in a database, in memory etc. &lt;br /&gt;
*Examine how the application tracks sessions. &lt;br /&gt;
*Determine the actions the application takes if an invalid session ID occurs. &lt;br /&gt;
*Examine session invalidation. &lt;br /&gt;
*Determine how multithreaded/multi-user session management is performed. &lt;br /&gt;
*Determine the session HTTP inactivity timeout. &lt;br /&gt;
*Determine how the log-out functionality functions.&lt;br /&gt;
&lt;br /&gt;
==Threat Analysis==&lt;br /&gt;
The prerequisite in the analysis of threats is the understanding of the generic definition of risk that is the probability that a threat agent will exploit a vulnerability to cause an impact to the application. From the perspective of risk management, threat modeling is the systematic and strategic approach for identifying and enumerating threats to an application environment with the objective of minimizing risk and the associated impacts. &lt;br /&gt;
&lt;br /&gt;
Threat analysis as such is the identification of the threats to the application, and involves the analysis of each aspect of the application functionality and architecture and design to identify and classify potential weaknesses that could lead to an exploit. &lt;br /&gt;
&lt;br /&gt;
In the first threat modeling step, we have modeled the system showing data flows, trust boundaries, process components, and entry and exit points. An example of such modeling is shown in the Example: Data Flow Diagram for the College Library Website. &lt;br /&gt;
&lt;br /&gt;
Data flows show how data flows logically through the end to end, and allows the identification of affected components through critical points (i.e. data entering or leaving the system, storage of data) and the flow of control through these components. Trust boundaries show any location where the level of trust changes. Process components show where data is processed, such as web servers, application servers, and database servers. Entry points show where data enters the system (i.e. input fields, methods) and exit points are where it leaves the system (i.e. dynamic output, methods), respectively. Entry and exit points define a trust boundary. &lt;br /&gt;
&lt;br /&gt;
Threat lists based on the STRIDE model are useful in the identification of threats with regards to the attacker goals. For example, if the threat scenario is attacking the login, would the attacker brute force the password to break the authentication? If the threat scenario is to try to elevate privileges to gain another user’s privileges, would the attacker try to perform forceful browsing? &lt;br /&gt;
&lt;br /&gt;
It is vital that all possible attack vectors should be evaluated from the attacker’s point of view. For this reason, it is also important to consider entry and exit points, since they could also allow the realization of certain kinds of threats. For example, the login page allows sending authentication credentials, and the input data accepted by an entry point has to validate for potential malicious input to exploit vulnerabilities such as SQL injection, cross site scripting, and buffer overflows. Additionally, the data flow passing through that point has to be used to determine the threats to the entry points to the next components along the flow. If the following components can be regarded critical (e.g. the hold sensitive data), that entry point can be regarded more critical as well. In an end to end data flow, for example, the input data (i.e. username and password) from a login page, passed on without validation,  could be exploited for a SQL injection attack to manipulate a query for breaking the authentication or to modify a table in the database. &lt;br /&gt;
&lt;br /&gt;
Exit points might serve as attack points to the client (e.g. XSS vulnerabilities) as well for the realization of information disclosure vulnerabilities. For example, in the case of exit points from components handling confidential data (e.g. data access components), exit points lacking security controls to protect the confidentiality and integrity can lead to disclosure of such confidential information to an unauthorized user. &lt;br /&gt;
&lt;br /&gt;
In many cases threats enabled by exit points are related to the threats of the corresponding entry point. In the login example, error messages returned to the user via the exit point might allow for entry point attacks, such as account harvesting (e.g. username not found), or SQL injection (e.g. SQL exception errors). &lt;br /&gt;
&lt;br /&gt;
From the defensive perspective, the identification of threats driven by security control categorization such as ASF, allows a threat analyst to focus on specific issues related to weaknesses (e.g. vulnerabilities) in security controls. Typically the process of threat identification involves going through iterative cycles where initially all the possible threats in the threat list that apply to each component are evaluated. &lt;br /&gt;
&lt;br /&gt;
At the next iteration, threats are further analyzed by exploring the attack paths, the root causes (e.g. vulnerabilities, depicted as orange blocks) for the threat to be exploited, and the necessary mitigation controls (e.g. countermeasures, depicted as green blocks). A threat tree as shown in figure 2 is useful to perform such threat analysis &lt;br /&gt;
&lt;br /&gt;
[[Image:Threat_Graph.gif|Figure 2: Threat Graph]]&lt;br /&gt;
&lt;br /&gt;
Once common threats, vulnerabilities, and attacks are assessed, a more focused threat analysis should take in consideration use and abuse cases. By thoroughly analyzing the use scenarios, weaknesses can be identified that could lead to the realization of a threat. Abuse cases should be identified as part of the security requirement engineering activity. These abuse cases can illustrate how existing protective measures could be bypassed, or where a lack of such protection exists. A use and misuse case graph for authentication is shown in figure below:&lt;br /&gt;
&lt;br /&gt;
[[Image:UseAndMisuseCase.jpg|640px|Figure 3: Use and Misuse Case]]&lt;br /&gt;
&lt;br /&gt;
Finally, it is possible to bring all of this together by determining the types of threat to each component of the decomposed system. This can be done by using a threat categorization such as STRIDE or ASF, the use of threat trees to determine how the threat can be exposed by a vulnerability, and use and misuse cases to further validate the lack of a countermeasure to mitigate the threat.&lt;br /&gt;
&lt;br /&gt;
To apply STRIDE to the data flow diagram items the following table can be used: &lt;br /&gt;
&lt;br /&gt;
TABLE&lt;br /&gt;
&lt;br /&gt;
==Ranking of Threats==&lt;br /&gt;
Threats can be ranked from the perspective of risk factors. By determining the risk factor posed by the various identified threats, it is possible to create a prioritized list of threats to support a risk mitigation strategy, such as deciding on which threats have to be mitigated first. Different risk factors can be used to determine which threats can be ranked as High, Medium, or Low risk. In general, threat risk models use different factors to model risks such as those shown in figure below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Riskfactors.JPG|Figure 3: Risk Model Factors]]&lt;br /&gt;
&lt;br /&gt;
==DREAD==&lt;br /&gt;
In the Microsoft DREAD threat-risk ranking model, the technical risk factors for impact are Damage and Affected Users, while the ease of exploitation factors are Reproducibility, Exploitability and Discoverability. This risk factorization allows the assignment of values to the different influencing factors of a threat. To determine the ranking of a threat, the threat analyst has to answer basic questions for each factor of risk, for example: &lt;br /&gt;
&lt;br /&gt;
*For Damage: How big would the damage be if the attack succeeded?&lt;br /&gt;
*For Reproducibility: How easy is it to reproduce an attack to work?&lt;br /&gt;
*For Exploitability: How much time, effort, and expertise is needed to exploit the threat?&lt;br /&gt;
*For Affected Users: If a threat were exploited, what percentage of users would be affected?&lt;br /&gt;
*For Discoverability: How easy is it for an attacker to discover this threat?&lt;br /&gt;
&lt;br /&gt;
By referring to the college library website it is possible to document sample threats releated to the use cases such as: &lt;br /&gt;
&lt;br /&gt;
'''Threat: Malicious user views confidential information of students, faculty members and librarians.'''&lt;br /&gt;
# '''Damage potential:''' Threat to reputation as well as financial and legal liability:8&lt;br /&gt;
# '''Reproducibility:'''  Fully reproducible:10&lt;br /&gt;
# '''Exploitability:'''   Require to be on the same subnet or have compromised a router:7&lt;br /&gt;
# '''Affected users:'''   Affects all users:10&lt;br /&gt;
# '''Discoverability:'''  Can be found out easily:10&lt;br /&gt;
&lt;br /&gt;
Overall DREAD score: (8+10+7+10+10) / 5 = 9&lt;br /&gt;
&lt;br /&gt;
In this case having 9 on a 10 point scale is certainly an high risk threat&lt;br /&gt;
&lt;br /&gt;
==Generic Risk Model==&lt;br /&gt;
A more generic risk model takes into consideration the Likelihood (e.g. probability of an attack) and the Impact (e.g. damage potential): &lt;br /&gt;
&lt;br /&gt;
'''Risk = Likelihood x Impact'''&lt;br /&gt;
&lt;br /&gt;
The likelihood or probability is defined by the ease of exploitation, which mainly depends on the type of threat and the system characteristics, and by the possibility to realize a threat, which is determined by the existence of an appropriate countermeasure.  &lt;br /&gt;
&lt;br /&gt;
The following is a set of considerations for determining ease of exploitation: &lt;br /&gt;
# Can an attacker exploit this remotely? &lt;br /&gt;
# Does the attacker need to be authenticated?&lt;br /&gt;
# Can the exploit be automated?&lt;br /&gt;
&lt;br /&gt;
The impact mainly depends on the damage potential and the extent of the impact, such as the number of components that are affected by a threat. &lt;br /&gt;
&lt;br /&gt;
Examples to determine the damage potential are:&lt;br /&gt;
# Can an attacker completely take over and manipulate the system?  &lt;br /&gt;
# Can an attacker gain administration access to the system?&lt;br /&gt;
# Can an attacker crash the system? &lt;br /&gt;
# Can the attacker obtain access to sensitive information such as secrets, PII&lt;br /&gt;
&lt;br /&gt;
Examples to determine the number of components that are affected by a threat:&lt;br /&gt;
# How many data sources and systems can be impacted?&lt;br /&gt;
# How “deep” into the infrastructure can the threat agent go?&lt;br /&gt;
&lt;br /&gt;
These examples help in the calculation of the overall risk values by assigning qualitative values such as High, Medium and Low to Likelihood and Impact factors. In this case, using qualitative values, rather than numeric ones like in the case of the DREAD model, help avoid the ranking becoming overly subjective.&lt;br /&gt;
&lt;br /&gt;
==Countermeasure Identification==&lt;br /&gt;
The purpose of the countermeasure identification is to determine if there is some kind of protective measure (e.g. security control, policy measures) in place that can prevent each threat previosly identified via threat analysis from being realized. Vulnerabilities are then those threats that have no countermeasures. Since each of these threats has been categorized either with STRIDE or ASF, it is possible to find appropriate countermeasures in the application within the given category. &lt;br /&gt;
&lt;br /&gt;
Provided below is a brief and limited checklist which is by no means an exhaustive list for identifying countermeasures for specific threats. &lt;br /&gt;
 &lt;br /&gt;
Example of countermeasures for ASF threat types are included in the following table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;ASF Threat &amp;amp; Countermeasures List&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Threat Type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Countermeasure&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authentication&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Credentials and authentication tokens are protected with encryption in storage and transit&lt;br /&gt;
#Protocols are resistant to brute force, dictionary, and replay attacks&lt;br /&gt;
#Strong password policies are enforced&lt;br /&gt;
#Trusted server authentication is used instead of SQL authentication&lt;br /&gt;
#Passwords are stored with salted hashes&lt;br /&gt;
#Password resets do not reveal password hints and valid usernames&lt;br /&gt;
#Account lockouts do not result in a denial of service attack&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Authorization&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Strong ACLs are used for enforcing authorized access to resources&lt;br /&gt;
#Role-based access controls are used to restrict access to specific operations&lt;br /&gt;
#The system follows the principle of least privilege for user and service accounts&lt;br /&gt;
#Privilege separation is correctly configured within the presentation, business and data access layers&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Configuration Management&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Least privileged processes are used and service accounts with no administration capability&lt;br /&gt;
#Auditing and logging of all administration activities is enabled&lt;br /&gt;
#Access to configuration files and administrator interfaces is restricted to administrators&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Data Protection in Storage and Transit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Standard encryption algorithms and correct key sizes are being used&lt;br /&gt;
#Hashed message authentication codes (HMACs) are used to protect data integrity&lt;br /&gt;
#Secrets (e.g. keys, confidential data ) are cryptographically protected both in transport and in storage&lt;br /&gt;
#Built-in secure storage is used for protecting keys&lt;br /&gt;
#No credentials and sensitive data are sent in clear text over the wire&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Data Validation / Parameter Validation&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Data type, format, length, and range checks are enforced&lt;br /&gt;
#All data sent from the client is validated&lt;br /&gt;
#No security decision is based upon parameters (e.g. URL parameters) that can be manipulated&lt;br /&gt;
#Input filtering via white list validation is used&lt;br /&gt;
#Output encoding is used&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error Handling and Exception Management&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#All exceptions are handled in a structured manner&lt;br /&gt;
#Privileges are restored to the appropriate level in case of errors and exceptions&lt;br /&gt;
#Error messages are scrubbed so that no sensitive information is revealed to the attacker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User and Session Management&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#No sensitive information is stored in clear text in the cookie&lt;br /&gt;
#The contents of the authentication cookies is encrypted&lt;br /&gt;
#Cookies are configured to expire&lt;br /&gt;
#Sessions are resistant to replay attacks&lt;br /&gt;
#Secure communication channels are used to protect authentication cookies&lt;br /&gt;
#User is forced to re-authenticate when performing critical functions&lt;br /&gt;
#Sessions are expired at logout&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Auditing and Logging&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Sensitive information (e.g. passwords, PII) is not logged&lt;br /&gt;
#Access controls (e.g. ACLs) are enforced on log files to prevent un-authorized access&lt;br /&gt;
#Integrity controls (e.g. signatures) are enforced on log files to provide non-repudiation&lt;br /&gt;
#Log files provide for audit trail for sensitive operations and logging of key events&lt;br /&gt;
#Auditing and logging is enabled across the tiers on multiple servers&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using STRIDE, the following threat-mitigation table can be used to identify techniques that can be employed to mitigate the threats.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;1&amp;quot; CELLPADDING=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;STRIDE Threat &amp;amp; Mitigation Techniques List&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Threat Type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Mitigation Techniques&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Spoofing Identity&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Appropriate authentication&lt;br /&gt;
#Protect secret data&lt;br /&gt;
#Don't store secrets&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tampering with data&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Appropriate authorization&lt;br /&gt;
#Hashes&lt;br /&gt;
#MACs&lt;br /&gt;
#Digital signatures&lt;br /&gt;
#Tamper resistant protocols&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Repudiation&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Digital signatures&lt;br /&gt;
#Timestamps&lt;br /&gt;
#Audit trails&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Information Disclosure&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Authorization&lt;br /&gt;
#Privacy-enhanced protocols&lt;br /&gt;
#Encryption&lt;br /&gt;
#Protect secrets&lt;br /&gt;
#Don't store secrets&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denial of Service&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Appropriate authentication&lt;br /&gt;
#Appropriate authorization&lt;br /&gt;
#Filtering&lt;br /&gt;
#Throttling&lt;br /&gt;
#Quality of service&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr bgcolor=&amp;quot;#cccccc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elevation of privilege&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
#Run with least privilege&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once threats and corresponding countermeasures are identified it is possible to derive a threat profile with the following criteria:&lt;br /&gt;
&lt;br /&gt;
# '''Non mitigated threats:''' Threats which have no countermeasures and represent vulnerabilities that can be fully exploited and cause an impact &lt;br /&gt;
# '''Partially mitigated threats:''' Threats partially mitigated by one or more countermeasures which represent vulnerabilities that can only partially be exploited and cause a limited impact &lt;br /&gt;
# '''Fully mitigated threats:''' These threats have appropriate countermeasures in place and do not expose vulnerability and cause impact&lt;br /&gt;
&lt;br /&gt;
===Mitigation Strategies===&lt;br /&gt;
The objective of risk management is to reduce the impact that the exploitation of a threat can have to the application. This can be done by responding to a theat with a risk mitigation strategy. In general there are five options to mitigate threats &lt;br /&gt;
# '''Do nothing:''' for example, hoping for the best&lt;br /&gt;
# '''Inform about the risk:''' for example, warning user population about the risk&lt;br /&gt;
# '''Mitigate the risk:''' for example, by putting countermeasures in place&lt;br /&gt;
# '''Accept the risk:''' for example, after evaluating the impact of the exploitation (business impact)&lt;br /&gt;
# '''Transfer the risk:''' for example, through contractual agreements and insurance&lt;br /&gt;
&lt;br /&gt;
The decision of which strategy is most appropriate depends on the impact an exploitation of a threat can have, the likelihood of its occurrence, and the costs for transferring (i.e. costs for insurance) or avoiding (i.e. costs or losses due redesign) it. That is, such decision is based on the risk a threat poses to the system. Therefore, the chosen strategy does not mitigate the threat itself but the risk it poses to the system. Ultimately the overall risk has to take into account the business impact, since this is a critical factor for the business risk management strategy. One strategy could be to fix only the vulnerabilities for which the cost to fix is less than the potential business impact derived by the exploitation of the vulnerability. Another strategy could be to accept the risk when the loss of some security controls (e.g. Confidentiality, Integrity, and Availability) implies a small degradation of the service, and not a loss of a critical business function. In some cases, transfer of the risk to another service provider might also be an option. &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Code Review Project]]&lt;br /&gt;
[[Category:Threat_Modeling]]&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Code_Review_Project_Roadmap&amp;diff=139539</id>
		<title>OWASP Code Review Project Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Code_Review_Project_Roadmap&amp;diff=139539"/>
				<updated>2012-11-15T18:48:17Z</updated>
		
		<summary type="html">&lt;p&gt;Micheal w s mcnamee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The project's overall goal is to...&lt;br /&gt;
&lt;br /&gt;
'''be a reference document for the purpose of performing code review. This project shall provide examples in the most common web application development languages (Java and C# .NET)'''&lt;br /&gt;
&lt;br /&gt;
In the near term, we are focused on the following tactical goals...&lt;br /&gt;
&lt;br /&gt;
1. Looking at each attack type and examine the anti-pattern associated with the vulnerability which makes the attack possible. This shall include code examples to guide a reviewer on what to look for.&lt;br /&gt;
&lt;br /&gt;
2. Looking at the code review process, how it is managed and challanges one may encounter when performing code review in the &amp;quot;real world&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
3. Looking at the code review tools available and discussing the benefits and issues of using tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[[Category:OWASP Code Review Project&lt;/div&gt;</summary>
		<author><name>Micheal w s mcnamee</name></author>	</entry>

	</feed>