2019-12

Homomorphic hashing for secure update propagation - Facebook Code

Homomorphic hashing is a cryptographic primitive that can efficient make file distribution and memory integrity checking. LtHash is a specific homomorphic hashing algorithm, within the update propagation step of the Location Aware Distribution configuration management system.

The challenge of securing update propagation at scale is handling frequent updates with a centralized distributor can saturate the system.

The solution is to to delegate the propagation through its clients, meaning some subscribers can participate in forwarding the distributor’s original updates to other subscribers.

From an implementation perspective, it requires Signing each update, Signing the database, and Efficiently updatable hashing.

Intuitively, homomorphic hashing answers the question, “Given the hash of an input, along with a small update to that input, how can we compute the hash of the new input (with the update applied) without having to recompute the entire hash from scratch?”


Using Go Modules - The Go Blog

  • go mod init creates a new module, initializing the go.mod file that describes it.
  • go buildgo test, and other package-building commands add new dependencies to go.mod as needed.
  • go list -m all prints the current module’s dependencies.
  • go get changes the required version of a dependency (or adds a new dependency).
  • go mod tidy removes unused dependencies.

Computer Latency at a Human Scale

If say 1 CPU cycle took 1 second, then an Internet call across Pacific Ocean would take 11 years!

Therefore, we must keep latency in mind! When making a microservices call or getting cloud-based data, the application takes more time comparing to the slowest calls to storage. Optimizing your code to work in memory could be a wasted effort.


Inside Kubernetes RBAC

This post provides a concise, detailed model of Kubernetes’ Role-based Access Control (RBAC). The Kubernetes API is an Http API that provides Create/Read/Update/Delete access to query and modify the Kubernetes Object Store. Kubernetes supports multiple authentication and authorization strategies to control the access to the API.

General authorization indicates a relation hasAccess between a requesting user and a requested operation. Role-based authorization can be modeled as two relations, a relation matches between a role and a user and a relation grants between a role and an operation.

Kubernetes provides 4 Kubernetes Object Kinds to express Role-based Authorization, Roles and Cluster Roles as well as Role Bindings and Cluster Role Bindings.


A gentle introduction to multithreading

A nice post explaining process, multithreading, green threads, concurrency, and parallelism.


Application-level Stackless features - PyPy documentation

Currently PyPy implements greenlets on top of continulets. It also implements (an approximation of) tasklets and channels, emulating the model of Stackless Python.

Continulets are extremely light-weight, thought it consumes at least one page of physical memory (4KB) per live continulet, and half a megabyte of virtual memory on 32-bit or a complete megabyte on 64-bit.

The fundamental idea is that, at any point in time, the program happens to run one stack of frames (or one per thread, in case of multi-threading).