Floc Basics Vol.4:暗号技術とウォレット

暗号技術の基礎

CIA

Confidentiality
(機密性)
第三者に盗聴されないように限られた人だけがデータにアクセスできる
Integrity
(完全性)
データを改竄から保護できる
Availability
(可用性)
必要な時にいつでもアクセスできる

※トランザクションのACID属性とは違います。

ACID (コンピュータ科学)

ACIDとは、信頼性のあるトランザクションシステムの持つべき性質として1970年代後半に ジム・グレイが定義した概念で、これ以上分解してはならないという意味の原子性( 英: atomicity、 不可分性)、一貫性( 英: consistency)、独立性( 英: isolation)、および永続性( 英: durability)は、 トランザクション処理 …

暗号方式

暗号技術は「鍵」と「アルゴリズム(ルール)」によって成り立つ。

共通鍵(対象鍵)方式

暗号と複合に同じ鍵を利用する。
AES(AdvancedEncyptionStandard)など。

デメリット
・鍵を安全に共有するコストが大きい
・通信相手が増えると管理する鍵が増えてしまう

公開鍵(非対称鍵)方式

1976に誕生。
暗号と復号に異なる鍵を利用する。
公開鍵は誰でも見れるが、秘密鍵は所有者しか知られないようにする。
口座番号と暗証番号の関係に似ている。

「RSA」「楕円曲線暗号」というアルゴリズムが利用される。

PKIとは?|GMOグローバルサイン【公式】

PKI(公開鍵暗号基盤)とは、公開鍵と秘密鍵のキーペアからなる公開鍵暗号方式という技術を利用し、インターネット上で安全に情報のやりとりを行うセキュリティのインフラ(基盤)のことで、「公開鍵暗号方式」にて通信の暗号化を行い、情報を暗号化する「公開鍵」を含んだ「電子証明書」にて身元を保証します。

公開鍵暗号方式の仕組み

電子署名

No Title

No Description

電子署名(正しい送信者からの送信という検証)がないと、TXが改竄されているおそれがある。

秘密鍵が流出していない限り、送信者以外に電子署名はできないので、データの改竄防止が可能になる。

・送信者は「データ」と「データのハッシュを送信者の秘密鍵で暗号化したもの」を送信
・受信者は受信した『「データ」をハッシュ化したもの』と『「データのハッシュを送信者の秘密鍵で暗号化したもの」を送信者の公開鍵で復号化したもの』が一致することをか確認

電子署名の仕組み – 電子文書ソリューション(文書署名用電子証明書) | GMOグローバルサイン

電子署名は、データが正しいものであると証明する「公開鍵」と、送信者がデータをする「秘密鍵」を利用した公開鍵暗号基盤(PKI)というものが使われています。 秘密鍵と公開鍵はペアになっており、秘密鍵は受信側だけが保持している鍵なので、そのペアとなっている公開鍵でしか復号化はできません。 …

CAとSSL

CA(認証局)=電子証明書を発行する機関
これは「信任できる第三者(TrustedThirdParty)」。

公開鍵を認証局へ登録申請すると、本人確認が行われ、認証局の秘密鍵で電子署名した電子証明書が発行される。

SSL/TLSもWebサイトの公開鍵を認証局が電子署名することで、正当なWebサイトの運営者ということがわかり、フィッシングサイト対策にもなる。

認証局自体が信頼できるかどうかを確認したい場合は、ルート認証局/中間認証局を確認する必要がある。

※Man In The Middle Attack(中間者攻撃)

No Title

No Description

A->Bにデータを送る際に、AはBの公開鍵で暗号化するが、実はBの公開鍵がCの公開鍵だった場合、Cが自分の秘密鍵でデータを確認できてしまい、その後に本当のBの公開鍵で暗号化しBに送ると、AもBもそれには気づかない。公開鍵暗号方式はこのような問題がある。

「盗聴や改ざん」は他人事ではない!中間者攻撃とは何か理解してその対策をたてよう | グローバルサインブログ – SSL・電子証明書も含むセキュリティ全般の話題

インターネットが普及した今日では、インターネット上における「盗聴」や「改ざん」が身近な出来事になってしまいました。中間者攻撃では、会社の機密事項を扱う研究開発部門などを標的として極秘の情報が狙われるなどだけでなく、企業側と顧客との間に割り込んで両者が交換する情報を盗聴したりすりかえたりもします。したがって顧客とのやり取りをインターネットで行っているならば、どんな企業でも注意しなければいけない…

セキュリティ対策

E2EE(EndToEndEncryption)

→自分のブラウザ(もしくはアプリ)でデータを暗号化してからサービス側に送る方式

※パスワード管理の重要性

一部のWebサービスではパスワードを平文で保存している。もしくは古いWebサービスだと弱いハッシュで暗号化されている。

2FA

ログイン認証+セキュリティコードなどによる確認
→Google Authentication/Authy

Authenticator

Authenticator はお使いのブラウザーで2段階認証コードを生成します。

Authy

Authy: Two-Factor Authentication from your PC

Google Authenticator

・秘密鍵共有:ユーザ専用の秘密鍵をQRコードで読み取る
・カウンター表示:現在時刻を整数に変換して30秒で割って小数点以下を切り捨てたものを表示する。
・先頭6桁表示:秘密鍵とカウンターでハッシュ関数にかけて表示
・検証:サービス側とユーザは同じ鍵と時計を共有しているためセキュリティコードは一致する。

google/google-authenticator

The Google Authenticator project includes implementations of one-time passcode generators for several mobile platforms. One-time passcodes are generated using open standards developed by the Initiative for Open Authentication (OATH) (which is unrelated to OAuth).

U2F

専用USBでのユーザ認証。端末内で公開鍵と秘密鍵ノエぱが生成され、サーバ内に公開鍵を登録する。ユーザがボタンをタップすることで電子署名が作成されて、本人確認が行われる。

ウォレット理解

仮想通貨の始め方

・クライアントをDLする
・ブロックチェーンを同期する
・取引所で購入する or 友人から送金してもらう

クライアント

・フルクライアント(コアクライアント、フルノード)
・軽量クライアント

フルノード

機能としては、ウォレット機能、マイナー機能、フルブロックチェーン機能、ルーティング機能を持ち合わせる。

フルブロックチェーン(台帳の完全版)があるので、不正や改竄を検証できる。
ただし、ディスクの空き容量が必要。

2020年3月260GB。

Blockchain Size

The total size of all block headers and transactions. Not including database indexes.

軽量クライアント

機能としては、ウォレット機能、ルーティング機能のみ。

ブロックヘッダのみで、トランザクションは保持しないので、データサイズはフルノードの1/1000程度となる。

他のノードと接続して任意のアドレスへのTXを収集する機能を持つ。

ウォレット

秘密鍵を保管するためのツール。公開鍵から算出されたアドレスがウォレット(ウォレットアドレス)。このアドレスに紐づくUTXOをかき集めることで残高を確認可能。

ウォレットの種類

種類利便性安全性内容
Webウォレット仮想通貨取引所は基本はこれ。ID/PASSで利用できる。
ソフトウェアウォレット 仮想通貨開発者が利用。BitcoinCoreが最も利用されている。
ハードウォレット公式ページなどの正規ルートで購入すべき。
ペーパーウォレットアドレスと秘密鍵がQRコード形式で印刷されている。大量の仮想通貨や長期の保管に向いている。消失リスクはある。

利便性と安全性がトレードオフとなっている。

アドレス

・秘密鍵のウォレットアドレス
・公開鍵のウォレットアドレス

※WIF(Wallet Import Format)

Wallet Import Format

What is the role of wallet import format? – Bitcoin StackExchange

秘密鍵と相互変換性がある

ウォレットアプリケーション

・残高表示
・複数のアドレスを管理可能

アドレスの構造

・1 or 3で始まる
 →1の場合、公開鍵をハッシュしたアドレス
 →3の場合、アウトプットのロックに使われるスクリプトをハッシュ化した「マルチシグネチャアドレス(MultiSig)」
 ※Base58で変換されている
・26 – 35文字の英数字
・prefix + entity(payload) + checksum

※Base58

Base58とは その意味や概要について – 【DMMビットコイン】暗号資産(仮想通貨)ならDMM Bitcoin

Base58(ベース58)はバイナリデータ(コンピュータが処理することのできるデータを2進数化したもの)を文字列として扱えるようにするエンコード方式です。Base64はWEBでも知られていますが、それと同様にバイナリデータを58種類の文字で表現します。Base64との大きな違いは英数字以外の文字が視覚的にわかりにくいところを除いた変更がされています。これにより、人が手動でデータ入力することや…

※bech32

Bech32

is a SegWit address format specified by BIP173. This address format is also known as “bc1 addresses”. Main disadvantages of base58 format which has been used in Bitcoin for most of its history are: Base58 needs a lot of space in QR codes, as it cannot use the alphanumeric mode.

prefixはbcで、「Segregated Witness(SegWit)」に対応したアドレス。

マルチシグネチャアドレス(MultiSig)

・複数の署名が必要なアドレス
・複数人の秘密鍵で運用されることを想定。(例えば、社長、顧問弁護士、経理担当者の3人で「2 of 3 MultiSig」)

※M of N MultiSig

秘密鍵N個のうちM個の署名がないと送金できないようにできる

メインネットとテストネット

メインネット
価値のあるBitcionを送金できる
テストネット開発、実験のためのネットワーク。regtestというモードで他のノードやブロックとは連動せずに利用可能。

BitMEX | Bitcoin Mercantile Exchange

The BitMEX Testnet offers all the functions of the full BitMEX trading platform, in a consequence-free environment using Testnet Bitcoin.

ホットウォレット・コールドウォレット

ホットウォレットインターネットに接続されている
コールドウォレットネットワークに「一度も」接続されたことのないウォレット
 大量の仮想通貨を運用する場合は、HSM (HardwareSecurityModule)を使って秘密鍵をオンラインにしないようにする必要あり。

※HSM

電子証明書を守る「HSM」とは? | グローバルサインブログ – SSL・電子証明書も含むセキュリティ全般の話題

データ・セキュリティを高めるためのデバイスで「ハードウェア・セキュリティ・モジュール(HSM)」というものがあります。実は電子証明書の利用に役立つデバイスで、パスポートや運転免許証など重要情報に関わる部分に多く使用されています。 ここではHSMの特性や役割を解説しながら、導入によって得られるメリット・デメリットとHSM利用の可能性について考えます。 …

暗号鍵の保護に特化したハードウェア。
内蔵された専用チップに秘密鍵を保存。
外部からどんな指示が送られても電子署名しか返さない。

Trezor、Ledger nanoが人気。

Trezor Hardware Wallet | The original & most secure bitcoin wallet.

Securing your digital assets has never been more straightforward. Audited by security researchers, verified by our track record. Learn more Experts ready to help you at all times. Learn more Designed for your confidence and ease-of-mind. Explore Wallet Password Manager You can always recover access to your coins & assets from your offline backup.

Hardware Wallet – State-of-the-art security for crypto assets | Ledger

A hardware wallet is a cryptocurrency wallet which stores the user’s private keys (critical piece of information used to authorise outgoing transactions on the blockchain network) in a secure hardware device. The main principle behind hardware wallets is to provide full isolation between the private keys and your easy-to-hack computer or smartphone.

階層的決定性ウォレット(HDウォレット)

BIP0032とは – 用語解説 | ビットバンク

HDウォレット BIP32(階層的決定性ウォレット)は、マスターとなる128bitsのエントロピーからなるシード値から、m/i/0/kのような階層構造で決定論的に秘密鍵を生成できる汎用性の高いウォレット管理プロトコルの標準規格で、英語では Hierarchical Deterministic Wallet(HD Wallet)と言います。 …

ウォレットには多くのアドレスが管理されている。
「決定性ウォレットアドレス」という考え方が用いられている。

乱数から秘密鍵を生成→マスター秘密鍵

マスター秘密鍵とインデックスを組み合わせて秘密鍵と公開鍵、アドレスを生成する。

さらに改良を加えたのが、階層的決定性ウォレット。アルゴリズムはBIP32で提案され、BIP44で定義されている。

BIP=Bitcoin Improvement Propsals