Showing posts with label glossary. Show all posts
Showing posts with label glossary. Show all posts

Monday, September 2, 2019

What is API?

What is API?
API stands for Application Programming Interface. An API is a software intermediary that allows two applications to talk to each other.  In other words, an API is the messenger that delivers your request to the provider that you’re requesting it from and then delivers the response back to you.
An API defines functionalities that are independent of their respective implementations, which allows those implementations and definitions to vary without compromising each other. Therefore, a good API, makes it easier to develop a program by providing the building blocks.
When developers create code, they don’t often start from scratch. APIs enable developers make repetitive yet complex processes highly reusable with a little bit of code. The speed that APIs enable developers to build out apps is crucial to the current pace of application development.
Developers are now much more productive than they were before when they had to write a lot of code from scratch. With an API they don’t have to reinvent the wheel every time they write a new program. Instead, they can focus on the unique proposition of their applications while outsourcing all of the commodity functionality to APIs.
The principle of API abstraction enables speed and agility
One of the chief advantages pf APIs is that they allow the abstraction of functionality between one system and another. An API endpoint decouples the consuming application from the infrastructure that provides a service. As long as the specification for what the service provider is delivering to the endpoint remains unchanged, the alterations to the infrastructure behind the endpoint should not be noticed by the applications that rely on that API.
Therefore, the service provider is given a great deal of flexibility when it comes to how its services are offered. For example, if the infrastructure behind the API involves physical servers at a data center, the service provider can easily switch to virtual servers that run in the cloud.
If the software running on those servers (such as credit card processing software) is written in, say, Java running on an Oracle-based Java application server, the service provider can migrate that to Node.js (server-side Javascript) running on Windows Azure.
The ability of API--led connectivity to allow systems to change as easily as plugging in a plug to a socket is key to the modern vision of enterprise IT. Gone are the days of messy point-to-point integrations for connecting enterprise solutions which take time and resources to maintain.
How do APIs work?
Imagine a waiter in a restaurant.  You, the customer, are sitting at the table with a menu of choices to order from, and the kitchen is the provider who will fulfill your order.
You need a link to communicate your order to the kitchen and then to deliver your food back to your table. It can’t be the chef because she’s cooking in the kitchen. You need something to connect the customer who’s ordering food and the chef who prepares it.  That’s where the waiter — or the API —  enters the picture.
The waiter takes your order, delivers it to the kitchen, telling the kitchen what to do. It then delivers the response, in this case, the food, back to you. Moreover, if the API is designed correctly hopefully, your order won’t crash!
 A real example of API
How are APIs used in the real world? Here’s a very common scenario of the API economy at work: booking a flight.
When you search for flights online, you have a menu of options to choose from. You choose a departure city and date, a return city and date, cabin class, and other variables like your meal, your seat, or baggage requests.
To book your flight, you need to interact with the airline’s website to access the airline’s database to see if any seats are available on those dates, and what the cost might be based on the date, flight time, route popularity, etc.
You need access to that information from the airline’s database, whether you’re interacting with it from the website or an online travel service that aggregates information from multiple airlines. Alternatively, you might be accessing the information from a mobile phone. In any case, you need to get the information, and so the application must interact with the airline’s API, giving it access to the airline’s data.
The API is the interface that, like your helpful waiter, runs and delivers the data from the application you’re using to the airline’s systems over the Internet. It also then takes the airline’s response to your request and delivers right back to the travel application you’re using. Moreover, through each step of the process, it facilitates the interaction between the application and the airline’s systems – from seat selection to payment and booking.
APIs do the same for all interactions between applications, data, and devices. They allow the transmission of data from system to system, creating connectivity. APIs provide a standard way of accessing any application data, or device, whether it’s accessing cloud applications like Salesforce, or shopping from your mobile phone.
Type of APIs
There are numerous types of APIs. For example, you may have heard of Java APIs, or interfaces within classes that let objects talk to each other in the Java programming language. Along with program-centric APIs, there are also Web APIs such as the Simple Object Access Protocol (SOAP), Remote Procedure Call (RPC), and perhaps the most popular—at least in name—Representational State Transfer (REST). There are 15,000 publicly available APIs, according to Programmable Web, and many thousands of more private APIs that companies use to expand their internal and external capabilities.

Monday, February 11, 2019

Public Key Cryptography



PKI for busy people

Public-key infrastructure (PKI) is an umbrella term for everything that has to do with certificate and key management.
This is a quick overview of the important stuff.

Public-key cryptography

Public-key cryptography involves a key pair: a public key and a private key. Each entity has their own. The public key can be shared around, the private key is secret.
They allow doing two things:
  • Encrypt a message with the public key, decrypt it with the private key
  • Sign a message with the private key, verify it with the public key
Some common algorithms are RSA (used for both) and ECDSA (only for signatures).
In practice, public-key cryptography can be slow. That’s why nearly all protocols (such as TLS or SSH) only use it for authentication. Much faster symmetric-key algorithms (such as AES) are then used for encryption. This requires a shared secret, which is usually agreed upon using some flavor of Diffie-Hellman.

Hashing

Hashing algorithms (such as SHA) are one-way functions that take any input and compute a unique fixed-size output. The output is called a hash (or sometimes digest).

Signatures

Signatures authenticate messages. Here’s a rough simplification:
  • To sign a message, a code (the “signature”) is a calculated using the message and a private key
  • Using the public key and the original message, anyone can then verify the signature was indeed calculated from the message using the corresponding private key
Signing the whole message is pretty inefficient, so its hash is signed instead. That’s why you’ll see signature algorithms with descriptions like “ECDSA Signature with SHA-256.”

Certificates

A certificate is a name and public key bound by a signature. It identifies the owner of a public key.
The signee is called a certificate authority (CA). The CA is often some big company, like GeoTrust or Let’s Encrypt. With internal PKI, it can be any entity that nodes have been configured to trust.
A CA’s certificate can be signed by another CA, and so on. The last certificate in the chain is called a root certificate. Root certificates are trusted and stored locally. They’re usually shipped along browsers and the OS.

Formats

Most often when people talk about certificates, they refer to X.509. It’s a flexible format for representing certificates. X.509 is used by TLS, which is used by a lot of things, like HTTPS and Kubernetes.
X.509 certificates are written in the ASN.1 notation. The ASN.1 is usually serialized into DER. Since binary data can be a pain to transmit, it’s often further encoded into PEM. PEM is essentially just Base64-encoded DER.

Verification

Certificate verification consists of making sure the certificate chain is valid and leads to a trusted root certificate.
Of course, it assumes we trust the CAs, safe in the knowledge that they conform to sane security practices and only issue certificates to verified entities.

Bundling

Since verification requires the complete chain, certificates are often distributed as a bundle. In the case of TLS, the chain is sent during the handshake.
Usually PEM files are just concatenated into one.
Certificates can also be bundled using PKCS #12 (also known as PFX) or PKCS #7. The main difference is PKCS #12 can store private keys.

Issuance

When applying for a certificate:
  1. The client sends a certificate signing request (CSR) to the CA. It includes the client’s public key and a bunch of distinguished name attributes (such as country and domain name)
  2. If everything looks good, the CA generates a certificate from the CSR
In the simplest case, the CA just performs Domain Validation (DV). It’s usually fast and automated, like checking for some specific DNS record.
For more thorough vetting, there’s also Organization Validation (OV) and Extended Validation (EV). OV implies DV and verifying ownership of the legal entity. EV is the slowest and most rigorous of all, based on CA/Browser Forum guidelines. EV certificates are usually displayed prominently (for example, on Safari the URL will be green).
For internal PKI, you can do whatever works best. With Kubernetes, you might send certificates to the nodes manually, or automate client CSRs and signing.

Revocation

There’s basically two ways to revoke certificates: certificate revocation lists (CRLs) and OCSP. A CRL is just a big list of certificates revoked by the CA. OCSP is a protocol that allows inquiring about a specific certificate.
Both have their flaws. They add overhead. A lot of software don’t care. It might be easier to just use short-lived certificates and make issuance super smooth and simple.

Summary

  • With someone’s public key, we can verify their signatures and send them encrypted messages
  • With our private key, we can sign messages and decrypt messages sent to us
  • Certificates identify public key owners
  • We trust a certificate because we trust the CA that signed it
  • We trust the CA because Apple/Google/Microsoft/whoever added the CA’s certificate on the server/etc. trusts them
February 11, 2019

Friday, November 23, 2018

Glossary - Information Technology

5G Technology

5G will be the key to unlocking the full potential of IoT and a host of other technologies. Businesses can get a jump on their competition if they apply the power of 5G to their products and services first. This glossary lists 25 5G-related terms and explains their meaning and their importance to the enterprise. 

From the glossary: 

Throughout history, each new technological advance has precipitated the next advance, in a continuous loop of faster, better, and more powerful technology. This principle has been the cornerstone for the IT industry since its inception. For mobile telecommunication, the next great technological advance in this cycle has been given the moniker fifth-generation (5G) wireless. 

Predictably, 5G is going to be a much faster form of wireless mobile communication than its predecessors. But 5G also promises to be more than just faster. The 5G standards being developed promise a telecommunications network that also dramatically improves latency, coverage, capacity, and density. 

5G technology will be the key to unlocking the full potential of IoT, real-time mobile streaming, autonomous vehicles, immersive virtual reality, and a slew of other technological advances necessary for a mobile, always connected world—a prime example of technology precipitating more technology. 

Businesses that can apply 5G technology to their products and services early in the advancement cycle could get a huge jump on their competition. However, as is often the case in mobile wireless technology, there are varying standards and use cases for 5G, which greatly complicates matters. This glossary lists 25 5G-related terms and explains their meaning and their importance to the enterprise.

Source: TechRepublic

Saturday, September 22, 2018

Glossary - 3D Printing

3D Printing - 3D printing is any of various processes in which material is joined or solidified under computer control to create a three-dimensional object, with material being added together (such as liquid molecules or powder grains being fused together).

ABS - Acrylonitrile Buadiene Styrene. One type of plastic filament used in the Fused Filament Fabrication 3D Printing process. Lightweight, high heat resistent. Used in applications such as plumbing materials, (plastic) musical instruments, small kitchen appliances and lego toy bricks.

Build Plate - the surface on which the 3D printed model is formed.

Build Platform - The part that supports the build plate.

Build Envelope - The measured limitations of a 3D printer's space, which determines the maximum physical size of a 3D model that can be produced.

Dual Extrusion - The ability to print in two colors at once. The 3D printer with dual extrusion capabilities is equipped with two extruders, each feeding its own spool of plastic filament and depositing on the build plate.

Extruder - The part of 3D printer that melts and deposits the melted plastic.

Filament - The thermoplastic feedstock for fused deposition modeling 3D printers.

Fused Deposition Method (FDM) - See Fused Filament Fabrication)

Fused Filament Fabrication (FFF) - An additive manuafacturing process in which a spool of plastic filament is heated to a melting point and deposited, built from the bottom up one layer at a time until a 3D model is created.

G-Code -  is the common name for the most widely used numerical control (NC) programming language. It is used mainly in computer-aided manufacturing to control automated machine tools.

Infill - plastic, a model is typically printed with a patterned internal "mesh". In the 3D print settings  this is usually represented by a percentage (ex. 10% infill).

Layer Height - The thickness of a particular layer in a 3D printed model. (ex. 0.20 mm)

Makerware - The free software designed for the Makerbot 3D prints that prepares your 3D digital model for printing and sends the file to the printer.

Mesh - the surface area of a 3D model in digital form. In curved shapes this is typically represented by a series of flat triangles. The smaller the triangles the finer the printed results will be.

Nozzle - The part of the extruder that deposits the melted plastic material.

OBJ - Short for Object file. A file format from 3D mdoeling programs commonly used in 3D printing.

Overhang - A part of a 3D model where there is no support below it. Parts that jut out at an angle of over 45 degrees are gneerally considered overhangs.

PLA - Polylactic Acid. Corn-based plastic filament used on the Fused Filament Fabrication 3D printing process. Biodegradable and dosen't give off fumes like ABS plastic does. Used in applications such as medical implants, compostable packing materia and disposable garments.

Raft - To prevent warping during printing and to ensure successful prints of models with minimal area on their base surfaces, a flat layer of support material will print below the model on the build plate. Raft supports are constructed to be moveable, either by dipping in a chemical bath of pulling apart

Resolution - The minimum detail size that can be expected to be reproduced. On the Makerbot Replicator 2x, the highest resolution available is 100 microns (0.0039 in.)

Shell - the outer layer of a 3D printed model. In 3D printing programs thsi is represented by the number of layers of plastic used to create the outer layer (ex. 2 shells).

Slice - Most 3D printer programs automatically generate, or "slice" your 3D digital model into the layers to prepare for printing.

STL - Short for Stereolithographic. A file format 3D modeling programs commonly used in 3D printing.

Supports - Models that have large overhangs or gaps between parts require support material to be printed, with the Makerbot Replicator 2x, the material used for supports is the same as the material used to print the model itself. Support material is constructed to be removable.

X, Y, Z axes - 3-dimensional coordinate system. Z axis represents what would typically be considered "vertical".