A Distributed System is a system whose components are located on different computers connected by a network – typically the Internet; which communicate and coordinate their actions by passing messages to one another.
Client–Server model is a distributed application structure that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Clients request communication sessions with servers which respond to incoming requests.
Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the application. They are said to form a peer-to-peer network of nodes.
Network partition refers to network decomposition into relatively independent subnets for their separate optimization as well as network split due to the failure of network devices.
Network topology is the topological structure of a network and may be depicted physically or logically. It is an application of graph theory wherein communicating devices are modeled as nodes and the connections between the devices are modeled as links or lines between the nodes.
Grid Computing is composed of many networked loosely coupled computers acting together to perform large tasks, these computers be more heterogeneous and geographically dispersed.
Cloud Computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. The term is generally used to describe data centers available to many users over the Internet.
A Virtual Machine (VM) is an emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination.
A computer program is a collection of instructions that performs a specific task when executed by a computer. n.b. Algorithms + Data Structures = Programs (a 1976 book written by Niklaus Wirth pointing out that algorithms and data structures are inherently related).
More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.
A Linked list is a linear collection of data elements, whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes which together represent a sequence. In its most basic form, each node contains: data, and a reference (in other words, a link) to the next node in the sequence. This structure allows for efficient insertion or removal of elements from any position in the sequence during iteration. More complex variants add additional links, allowing more efficient insertion or removal of nodes at arbitrary positions.
A database is an organized collection of data, generally stored and accessed electronically from a computer system. Where databases are more complex they are often developed using formal design and modeling techniques. A graph database is a database that uses graph structures for semantic queries with nodes, edges, and properties to represent and store data.
A database transactionsymbolizes a unit of work performed within a database management system (or similar system) against a database; and treated in a coherent and reliable way independent of other transactions.
ACID (Atomicity, Consistency, Isolation, Durability) is a set of properties of database transactions intended to guarantee validity even in the event of errors, power failures, etc.
A hash function is any function that can be used to map data of arbitrary size onto data of a fixed size. The values returned by a hash function are called hash values, hash codes, digests, or simply hashes. Hash functions are related to (and often confused with) checksums, check digits, fingerprints, lossy compression, randomization functions, error-correcting codes, and ciphers. Although the concepts overlap to some extent, each one has its own uses and requirements and is designed and optimized differently.
The CAP conjecture, also known as Brewer’s theorem states that it is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees: Consistency: Every read receives the most recent write or an error; Availability: Every request receives a (non-error) response – without the guarantee that it contains the most recent write; Partition tolerance: The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes. In particular, the CAP theorem implies that in the presence of a network partition, one has to choose between consistency and availability. Note that consistency as defined in the CAP theorem is quite different from the consistency guaranteed in ACID database transactions
The primary goal of information security is to control access to information. The value of the information is what must be protected. These values include confidentiality, integrityand availability. Inferred aspects are privacy, anonymityand verifiability.
confidentiality is an attribute of information that is not made available or disclosed to unauthorized individuals, entities, or processes.
data integrity means maintaining and assuring the accuracy and completeness of data over its entire lifecycle. This means that data cannot be modified in an unauthorized or undetected manner.
For any information system to serve its purpose, the information must be available when it is needed. Availability requires the computing systems used to store and process the information, the security controls used to protect it, and the communication channels used to access it must be functioning correctly.
Privacy is the ability of an individual or group to seclude themselves, or information about themselves, and thereby express themselves selectively. The boundaries and content of what is considered private differ among cultures and individuals; but share common themes. When something is private to a person, it usually means that something is inherently special or sensitive to them. The domain of privacy partially overlaps with security (confidentiality), which can include the concepts of appropriate use, as well as protection of information.
Anonymity requires that person be non-identifiable, unreachable, or untrackable.
Pseudonymity enables the other party to link different messages from the same person and, thereby, to establish a long-term relationship, without necessarily disclosing personally identifying information
Non-repudiation refers to a situation where a statement’s author cannot successfully dispute its authorship or the validity of an associated contract. The term is often seen in a legal setting when the authenticity of a signatureis being challenged.
In contrast with identification, which refers to the act of stating or otherwise indicating a claim purportedly attesting to a person or thing’s identity, authentication is the process of actually confirming that identity.
Authorization is the function of specifying access rights/privileges to resources, which is related to information security and computer security in general and to access control in particular.
Encryption is the process of encoding a message or information in such a way that only authorized parties can access it and those who are not authorized cannot. Encryption does not itself prevent interference; but denies the intelligible content to a would-be interceptor.
In symmetric-key encryption schemes, the encryption and decryption keys are the same.
In public-key encryption schemes, the encryption key is published for anyone to use and encrypt messages. However, only the receiving party has access to the decryption key that enables messages to be read.
A public key infrastructure (PKI), is centralized architecture in which one or more third parties – known as certificate authorities – certify ownership of key pairs.
a web of trust is a decentralized trust modelused in PGP, GnuPG, and other OpenPGP-compatible systems to establish the authenticity of the binding between a public key and its owner.There are many independent webs of trust, and any user (through their identity certificate) can be a part of, and a link between, multiple webs.
In cryptography, a nonce is an arbitrary number that can be used just once in a cryptographic communication. It is often a random or pseudo-random number issued in an authentication protocol to ensure that old communications cannot be reused in replay attacks.
To achieve overall system reliability in the presence of a number of faulty processes. This often requires processes to agree ( achieve consensus) on some data value that is needed during computation.
A Proof-of-Work (PoW) system (or protocol, or function) is a measure to deter denial of service attacks and other service abuses such as spam on a network by requiring some work from the service requester, usually meaning processing time by a computer.
Proof of authority (PoA) is an algorithm used with blockchains that delivers comparatively fast transactions through a consensus mechanism based on identity as a stake. Blockchain transactions and blocks are validated by approved accounts, known as validators.validators are incentivized to uphold the transaction process.
Proof of stake (PoS) is a type of consensus algorithm by which a cryptocurrency blockchain network aims to achieve distributed consensus. In PoS-based cryptocurrencies the creator of the next block is chosen via various combinations of random selection and wealth or age (i.e., the stake).
a zero-knowledge proofor zero-knowledge protocol is a method by which one party (the prover) can prove to another party (the verifier) that they know a value x, without conveying any information apart from the fact that they know the value x. The essence of zero-knowledge proofs is that it is trivial to prove that one possesses knowledge of certain information by simply revealing it; the challenge is to prove such possession without revealing the information itself or any additional information.
Byzantine Fault Tolerance (BFT) is the ability of a decentralized system to provide safety guarantees in the presence of faulty, or “Byzantine” members. Byzantine Fault Tolerant (BFT) consensus protocols are designed to function correctly even if some validator nodes — up to one-third of the network — are compromised or fail.
Consensus protocol allows nodes to collectively reach an agreement on whether to accept or reject a transaction.
Merle tree is a type of authenticated data structure that allows for efficient verification of data integrity and updates.
Open source is a term used for software that makes the original source code freely available so that it can be distributed and modified.