Skip to main content

GPG with ECC and Subkeys

1 Cryptology with OpenPGP and GPG

2 PGP public keys

My GPG Key: [email protected]

GPG is practically the standard for encryption for Linux users. If Elliptic Curve Cryptography (ECC) is used instead of the typical RSA, it is supposed to be even more secure. Unfortunately its interface and documentation aren't user-friendly. This is a record of how I arrived to a relatively secure GPG setup, as reference for other non-specialists who are familiar with UNIX. Brief technical, historical and mathematical background is given. I have some personal history with the mathematical theory of elliptic curves but was never a cryptographer. So, mathematicians who are not well-versed in Linux technicalities may find this documentation useful, as may Linux users who want to use ECC for secure GPG but do not want to get into the mathematical and algorithmic specifics.

2.1 Public Key Cryptography

The schema of public key cryptography to reliably send and verify messages is as follows.

Read more…

Arch Linux on Dell Inspiron

1 Installation

Reader's familiarity with Linux and command line is assumed.

1.1 Background

My GNU/Linux usage history was, roughly:

Roughly, meaning, briefly others like Fedora or Mandrake or FreeBSD were tried; or MS Windows at workplace or sometimes in dual boot. From 2013 to 2018 Ubuntu was the sole OS on my laptop. Meanwhile the zeitgeist transformed. Google is prefered for references than poring over man pages and HOWTOs for technical references.

The spur to move “ permanently” from Ubuntu was a taste of Arch Linux for Machine Learning about an year ago. This was coincident to shifting from an older laptop to Dell Inspiron 15 7559. The objectives are:

  • To install a full-fledged Arch Linux system with all paraphernalia;

  • To partition and set up for usage both the 250GB SSD and 1TB storage HDD;

  • To get both the Intel 530 HD integrated graphics and NVIDIA Geforce GTX960M GDDR5 Discrete Graphics processor to work;

  • Dual Boot with Windows 10 and enable Secure Boot;

  • Transfer files from old laptop,

  • Set up bells and whistles,

  • etc..

It was done, and this is a transcription (and tutorial). The main reference for everything is the Arch Wiki.

Arch Linux is very comfortable after long Debian use when not so “ user-friendly” and explicitly saying and writing “ GNU/Linux.” May the reader enjoy too.

Read more…

Arch Linux on DigitalOcean and Nginx with SSL

1 Deploy Arch Linux

How to get a web server on a DigitalOcean droplet with Nginx HTTP server and SSL.

1.1 Sign up and create droplet

If you haven't already created a DigitalOcean account, please use our signup link for DigitalOcean and get $10 of free credits. The signup link is provided here following their referral program that would give a few credits for both the subscriber and after a threshold, the referrer. After joining, you can yourself get referral credits. If you appreciated any part of our website, this will be an simple way to underwrite it with quantum of assistance at no additional cost for you and actually a $10 gain. Moreover if you are a student and a new DigitalOcean subscriber, after creating the account at the signup link you can also get $50 extra credit from the student developer program. Please note that you may have to open a support ticket for applying promo codes.

DigitalOcean no more supports Arch Linux directly. So first create a droplet with Debian 9 and your ssh key uploaded.

1.2 Installing Arch Linux

The way to do it fully manually is to follow the instructions in Install from SSH. DigitalOcean is already set up for that. ssh into the ip address of your droplet, available from DigitalOcean control panel.

Use our Arch Linux installation script after logging into the droplet as root:

# wget https://raw.githubusercontent.com/nemodicto/digitalocean-debian-to-arch/debian9/install.sh -O install.sh
# bash install.sh

Follow the instructions. The script will automatically install Arch Linux and reboot. At this point the ssh connection will be lost. Thereafter connect again using ssh as root user into the same droplet. The same ssh key would be copied to the Arch Linux installation; so login should be seamless.

Read more…

Fundamental theorem of symmetric functions and an application

Symmetric polynomials

Let \(R\) be a commutative ring and \(R[x_1, x_2 , \ldots , x_n]\) the polynomial ring in \(n\) indeterminates over \(R.\) A polynomial \(f(x)\) in it is said to be a symmetric polynomial (or symmetric function) of \(x_1, \ldots , x_n\) if it is unchanged by any permutation of the indeterminates. Consider the polynomials:

\begin{align*} e_1(x_1, \ldots , x_n) & = & x_1 + x_2 + \cdots + x_n \\ e_2(x_1, \ldots , x_n) & = & x_1x_2 + x_1x_3 + \cdots + x_1x_n + x_2x_3 + \cdots + x_{n-1}x_n \\ & \vdots & \\ e_i(x_1, \ldots , x_n) & = & \sum_{1\leq j_1 < j_2 < \cdots < j_i \leq n} x_{j_1} \dotsm x_{j_i} \\ & \vdots & \\ e_n(x_1, \ldots , x_n) & = & x_1x_2 \dotsm x_n \end{align*}

All of \(f(t ,x_1, \ldots , x_n)\) and \(e_i(x_1, \ldots , x_n)\) are symmetric functions of \(x_1, \ldots , x_n\). The \(e_i\)'s are called elementary symmetric polynomials of \(x_1, \ldots , x_n\). Sums, products and scalar multiples of symmetric polynomials are again symmetric polynomials. A polynomial \(g(e_1, \ldots , e_n)\) of \(e_1, \ldots , e_n\) becomes a symmetric polynomial \(g(x_1, \ldots x_n)\) when \(e_i\)'s are written in terms of \(x_i\)'s. The fundamental theorem on symmetric functions is the converse of this statement, that every symmetric polynomial can be expressed uniquely in this way, which is in this article stated and proved.

Read more…

Determinants of Matrices over Commutative Rings

Introduction

Let \(R\) be a commutative ring. Fix an integer \(n \geq 1\). Let \(\mathbf{A} = (a_{ij})\) be the \(n \times n\) square matrix

\begin{equation*} \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix} \end{equation*}

with entry \(a_{ij}\in R\) and \(1 \leq i,j \leq n\) is at the intersection of the \(i^\mathrm{th}\) row and \(j^\mathrm{th}\) column. We will define a function \(\det(\mathbf{A}) =\det (a_{ij})\) of this matrix \(\mathbf{A}\), which will also be denoted by

\begin{equation*} \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{vmatrix} \end{equation*}

We will also state and prove the various familiar properties of the determinant in this setting.

Read more…