Xipher는 키/비밀번호 기반 비대칭 암호화를 수행하기 위해 모이는 암호화 프리미티브의 선별 된 컬렉션입니다.
릴리스 페이지에서 최신 바이너리를 다운로드하여 경로에 추가하십시오.
Xipher는 MacOS에서 다음 명령을 사용하여 Brew로 설치할 수 있습니다.
brew install shibme/tap/xipherShell (MacOS/Linux)으로 :
curl -fsSL https://dev.shib.me/xipher/install/install.sh | shPowerShell (Windows) :
irm https: // dev.shib.me / xipher / install / install.ps1 | iexShell (MacOS/Linux)으로 :
curl -fsSL https://dev.shib.me/xipher/install/install.sh | sh -s v1.1.0PowerShell (Windows) :
$v = " 1.1.0 " ; irm https: // dev.shib.me / xipher / install / install.ps1 | iexDocker를 사용하지 않고도 Xipher를 실행할 수도 있습니다.
docker run --rm -v $PWD :/data -it shibme/xipher help 웹 어셈블리를 사용하여 구현 된 CLI와 상호 운용 가능한 웹 인터페이스를 여기에서 사용할 수 있습니다.
다음 시퀀스 다이어그램은 웹 앱의 워크 플로를 보여줍니다.
시퀀스 인디 아그램
참가자 rx as xipher <br> (브라우저)
배우 수신기
배우 발신자
참가자 sx as Xipher <br> (브라우저에서)
수신기->>+rx : 브라우저에서 Xipher 앱을 엽니 다
RX- >> RX : 키 쌍을 생성하여 브라우저 로컬 스토리지에 저장합니다.
RX- >>-수신기 : 공개 키 <br> (공유 할 수있는 URL)를 반환합니다.
수신기->>+발신자 : 암호화 URL을 공유합니다 <br> (이것은 공개 키를 매개 변수로 포함합니다)
발신자->>+sx : 공개 암호화 URL <br> (Xipher 암호화 웹 페이지를여십시오).
발신자->> SX : 암호화 해야하는 데이터를 입력합니다
SX- >> SX : URL에서 공개 키를 사용하여 데이터를 암호화합니다.
SX- >>-발신자 : 공개 키와 암호화 된 암호 텍스트를 반환합니다
발신자->>-수신기 : 암호화 된 암호 텍스트를 수신기로 보냅니다
수신기->>+rx : 암호 텍스트를 입력합니다 <br> (소반 페이지에서)
rx- >> rx : ciphertext <br> (로컬 스토리지의 비밀 키 사용)를 해독합니다.
RX- >>-수신기 : 해독 된 데이터를 반환합니다
패키지를 설치하십시오
go get -u dev.shib.me/xipher코드에 사용하십시오
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 ))
}브라우저 앱에서 Xipher를 웹 어셈블리 (WASM) 모듈로 사용하려면 아래 예제를 참조하십시오.
< 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는 다음 알고리즘과 라이브러리를 사용하여 기능을 달성합니다.
다음 시퀀스 다이어그램은 암호 기반 공개 키를 사용하여 데이터 암호화에서 Xipher의 워크 플로우를 보여줍니다.
시퀀스 인디 아그램
참가자 rx는 Xipher입니다
배우 수신기
배우 발신자
참가자 SX는 Xipher입니다
수신기->>+rx : 공개 파생 (입력 비밀번호)
RX- >>-수신기 : 공개 키를 반환합니다
수신기->> 발신자 : 공개 키를 공유합니다
발신자->>+sx : 공개 키로 데이터를 암호화합니다
SX- >>-발신자 : 공개 키와 암호화 된 암호 텍스트를 반환합니다
발신자->> 수신기 : 암호화 된 암호 텍스트를 수신기로 보냅니다
수신기->>+rx : 해독 데이터 (입력 암호 텍스트 및 비밀번호)
RX- >>-수신기 : 해독 된 데이터를 반환합니다
이 도구/라이브러리는 보증없이 제공되며 안정성을 보장하지 않습니다. 일부 구성 요소의 실험적 특성으로 인해 코드, 저장소 및 API에 대한 수정이 향후에 이루어질 것으로 예상됩니다. 이것을 생산 응용 프로그램에 통합하기 전에주의를 기울입니다. 식별 된 보안 문제를 즉시보고하십시오. 우리에게 그러한 우려를 알리는 데있어 당신의 협력은 높이 평가됩니다.