Slide 1

Slide 1 text

Tendermint KMS + Tony Arcieri · Rust in Blockchain · July 17th, 2019 0 ∞ S C I S S B

Slide 2

Slide 2 text

Tony Arcieri Hello! @bascule

Slide 3

Slide 3 text

@iqlusioninc

Slide 4

Slide 4 text

Today's Talk • Tendermint KMS: HSM-backed multi-chain key management system for Tendermint blockchains • Signatory: multi-provider digital signature library for Rust • yubihsm.rs: pure Rust client for Yubico YubiHSM2 • Abscissa: security-oriented Rust application framework

Slide 5

Slide 5 text

Tendermint KMS Key Management System for Tendermint Blockchains https://github.com/tendermint/kms/

Slide 6

Slide 6 text

• BFT protocol and consensus engine for blockchain applications, i.e "Raft for BFT" • Designed for Proof-of-Stake: security through network of validators / block proposers which sign blocks (Ed25519) • Application Blockchain Interface (ABCI): 
 pluggable applications with arbitrary validation logic • Multiple production networks deployed:
 Cosmos Hub, IRIS Network, Terra Tendermint

Slide 7

Slide 7 text

• Secure key storage for Tendermint validators:
 support for YubiHSM2, Ledger, and software-backed keys • Centralized signing service for multiple networks:
 validators can spin up new Tendermint networks without having to provision additional HSM hardware • Double-signing prevention: prevents validators from signing repeatedly at the same block height (and getting slashed) • Deployed in production: by multiple Tendermint validators Tendermint KMS

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Multi-provider Rust Digital Signature Library Signatory https://github.com/tendermint/signatory/

Slide 10

Slide 10 text

• Digital signature abstractions: traits for signing and verifying digital signatures with support for both ECDSA and Ed25519 algorithms • Support for popular Rust signing crates: wrappers for the following: • ed25519-dalek • ring • secp256k1 (FFI wrapper for libsecp256k1) • sodiumoxide (FFI wrapper for libsodium) • HSM-friendly abstractions: supports the following HSM options • YubiHSM2 • Ledger (Tendermint only) Signatory

Slide 11

Slide 11 text

Pure-Rust client library for YubiHSM2s yubihsm.rs https://github.com/tendermint/yubihsm-rs/

Slide 12

Slide 12 text

yubihsm.rs • Pure Rust: (re)implementation of the YubiHSM2 SDK and Secure Connection (SCP03) protocol with USB support • Most commands supported: ECDSA, Ed25519, key wrapping (encrypted export/import), HMAC, auditing • Mock HSM support: software reimplementation of the YubiHSM2 for testing and CI

Slide 13

Slide 13 text

0 ∞ S C I S S B Security-oriented Rust application framework https://github.com/iqlusioninc/abscissa/

Slide 14

Slide 14 text

x abscissa

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

IT WAS TOTALLY INVISIBLE HOWS THAT POSSIBLE ? THEY USED THE EARTHS MAGNETIC FIELD X THE INFORMATION WAS GATHERED AND TRANSMITTED UNDERGRUUND TO AN UNKNOWN LOCATION X DOES LANGLEY KNOW ABOUT THIS ? THEY SHOULD ITS BURIED OUT THERE SOMEWHERE X WHO KNOWS THE EXACT LOCATION ? ONLY WW THIS WAS HIS LAST MESSAGE X THIRTY EIGHT DEGREES FIFTY SEVEN MINUTES SIX POINT FIVE SECONDS NORTH SEVENTY SEVEN DEGREES EIGHT MINUTES FORTY FOUR SECONDS WEST X LAYER TWO Kryptos K2

Slide 17

Slide 17 text

• Framework for CLI apps or network services • Maximize features while minimizing dependencies • Strong focus on security (particularly dependencies) • Particularly interesting for blockchain applications 0 ∞ S C I S S B https://github.com/iqlusioninc/abscissa/

Slide 18

Slide 18 text

• Tendermint KMS • cargo-audit (RustSec) • Zcash Foundation "zebra" • Multiple internal iqlusion tools (OSS TBA) 0 ∞ S C I S S B Used by the following projects:

Slide 19

Slide 19 text

• command-line option parsing: simple declarative option parser based on gumdrop • components: ECS-like component architecture with hooks into the application lifecycle • configuration: parses TOML configurations files using serde • error handling: generic Error type based on the failure crate • logging: integrated logging subsystem based on the log crate • secrets management: optional Secret type (from the secrecy crate) which can be used to represent secret values parsed from configuration files or elsewhere • terminal interactions: support for colored terminal output 0 ∞ S C I S S B

Slide 20

Slide 20 text

$ cargo install abscissa 0 ∞ S C I S S B

Slide 21

Slide 21 text

$ abscissa new my_application_name 0 ∞ S C I S S B

Slide 22

Slide 22 text

0 ∞ S C I S S B

Slide 23

Slide 23 text

Abscissa blog post tomorrow! Want to know more? https://iqlusion.blog

Slide 24

Slide 24 text

Thanks for coming!

Slide 25

Slide 25 text

Links • Twitter: @bascule @iqlusioninc • iqlusion blog: https://iqlusion.blog • Abscissa: https://github.com/iqlusioninc/abscissa/ • Tendermint KMS: https://github.com/tendermint/kms/ • Signatory: https://github.com/tendermint/signatory/ • yubihsm.rs: https://github.com/tendermint/yubihsm-rs/