Xipher es una colección curada de primitivas criptográficas juntas para realizar un cifrado asimétrico basado en la clave/contraseña.
Descargue el último binario de la página de lanzamientos y agréguelo a su ruta.
Xipher se puede instalar con Brew usando el siguiente comando en MacOS
brew install shibme/tap/xipherCon shell (macOS/Linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | shCon PowerShell (Windows):
irm https: // dev.shib.me / xipher / install / install.ps1 | iexCon shell (macOS/Linux):
curl -fsSL https://dev.shib.me/xipher/install/install.sh | sh -s v1.1.0Con PowerShell (Windows):
$v = " 1.1.0 " ; irm https: // dev.shib.me / xipher / install / install.ps1 | iexTambién puede ejecutar Xipher sin instalar usando Docker:
docker run --rm -v $PWD :/data -it shibme/xipher help Aquí está disponible una interfaz web interoperable con la CLI, implementada utilizando el ensamblaje web.
El siguiente diagrama de secuencia ilustra el flujo de trabajo de la aplicación web.
secuencediagram
participante rx como xipher <br> (en el navegador)
actor receptor
remitente del actor
Participante SX como xipher <br> (en el navegador)
Receptor->>+rx: abre la aplicación Xipher en el navegador
RX->> RX: genera un par de claves y los almacena en el navegador de almacenamiento local
RX->>-Receptor: Devuelve la clave pública <br> (como una URL que se puede compartir)
Receptor->>+remitente: comparte la url de cifrado <br> (esto contiene la clave pública como parámetro)
Remitente->>+SX: Abre la URL de cifrado público <br> (abre la página web de cifrado XIPHER)
Remitente->> sx: ingresa los datos que deben estar encriptados
SX->> SX: cifra los datos utilizando la clave pública de la URL
Sx->>-remitente: devuelve texto cifrado encriptado con la clave pública
Remitente->>-receptor: envía el texto cifrado en cifrado al receptor
Receptor->>+rx: ingresa el texto cifrado <br> (en la página de decyrección)
RX->> RX: descifra el texto cifrado <br> (usando la clave secreta del almacenamiento local)
RX->>-Receptor: Devuelve datos descifrados
Instalar el paquete
go get -u dev.shib.me/xipherÚselo en su código
package main
import (
"encoding/base32"
"fmt"
"dev.shib.me/xipher"
)
func main () {
// Creating a new secret key for password
scrtKey , err := xipher . NewSecretKeyForPassword ([] byte ( "Paws0meKittyKuwan!" ))
if err != nil {
panic ( err )
}
// Deriving public key from secret key
pubKey , err := scrtKey . PublicKey ( false )
if err != nil {
panic ( err )
}
publicKeyBytes , err := pubKey . Bytes ()
if err != nil {
panic ( err )
}
fmt . Println ( "PublicKey:" , base32 . StdEncoding . WithPadding ( base32 . NoPadding ). EncodeToString ( publicKeyBytes ))
platinText := [] byte ( "Hello World!" )
// Encrypting plain text with public key
cipherText , err := pubKey . Encrypt ( platinText , true )
if err != nil {
panic ( err )
}
fmt . Println ( "Encrypted:" , base32 . StdEncoding . WithPadding ( base32 . NoPadding ). EncodeToString ( cipherText ))
// Decrypting cipher text with secret key
plainText , err := scrtKey . Decrypt ( cipherText )
if err != nil {
panic ( err )
}
fmt . Println ( "Decrypted:" , string ( plainText ))
}Para usar Xipher como un módulo de ensamblaje web (WASM) en una aplicación de navegador, siga el ejemplo a continuación.
< html >
< head >
< meta charset =" utf-8 " />
< script src =" https://dev.shib.me/xipher/wasm/wasm_exec.js " > </ script >
< script >
const go = new Go ( ) ;
WebAssembly . instantiateStreaming ( fetch ( "https://dev.shib.me/xipher/wasm/xipher.wasm" ) , go . importObject ) . then ( ( result ) => {
go . run ( result . instance ) ;
} ) ;
</ script >
</ head >
< body >
Call wasm methods that begin with xipher. For example: xipherNewSecretKey()
</ body >
</ html > Xipher usa los siguientes algoritmos y bibliotecas para lograr su funcionalidad:
El siguiente diagrama de secuencia ilustra el flujo de trabajo de Xipher en los datos de encriptación utilizando una clave pública basada en contraseña.
secuencediagram
participante rx como xipher
actor receptor
remitente del actor
participante sx como xipher
Receptor->>+RX: Derive Public (contraseña de entradas)
Rx->>-receptor: devuelve la clave pública
Receptor->> remitente: Clave pública de acciones
Remitente->>+sx: cifrar datos con clave pública
Sx->>-remitente: devuelve texto cifrado encriptado con la clave pública
Remitente->> receptor: envía el texto cifrado en cifrado al receptor
Receptor->>+RX: Decrypt Datos (entren en texto cifrado y contraseña)
RX->>-Receptor: Devuelve datos descifrados
Esta herramienta/biblioteca se proporciona sin ninguna garantía, y no hay garantía de su estabilidad. Debido a la naturaleza experimental de algunos de sus componentes, se anticipa que las modificaciones al código, el repositorio y la API se realizarán en el futuro. Se recomienda precaución antes de incorporar esto en una aplicación de producción. Informe de inmediato los problemas de seguridad identificados. Su cooperación para notificarnos sobre tales preocupaciones es muy apreciada.