SlideShare a Scribd company logo
1 of 35
51% 攻撃の原理とシミュレーション
竹井 悠人 (@yutopio_ja)
ソフトウェア エンジニア
株式会社 bitFlyer
2018/11/19 blockchain.tokyo #14
https://blockchain-tokyo.connpass.com/event/105918/
免責
このトークは、情報提供のみを目的として行われており、正確性・最新性についての保
障は一切ありません。内容は、会社の見解ではありません。この情報を元にして生じた
不利益について、当社およびスピーカは一切の責任を負いません。
bitFlyer 上での取引についての詳細は、当社カスタマ サポートへお問い合わせくださ
い。
自己紹介
竹井 悠人
Yuto Takei C# 大好き一筋 17 年 / 筋トレ勢
いまさらポケモンにはまってます
大学生になりました
投げ銭いつでもウェルカム
Software Engineer / CISO
bitFlyer のブロックチェーン
C# でスクラッチから設計した
ブロックチェーンを研究・開発
|ω・`) チラッ
エンジニア募集してるってよ
目次
1. ブロックチェーンと合意形成の関係
2. MinChain の紹介
3. 51% 攻撃のデモ
ブロックチェーンと合意形成の関係
ブロックチェーンとは
なにそれ美味しいの?
● 任意のデータの入れ物 (e.g. トランザクション) を作って、そのダイジェストを何かし
ら (e.g. ブロック) のハッシュ チェーンで繋いだデータ構造
何に向いているの?
● 透明性と完全性の要求が極めて高いケース
● 過去からのすべてのデータ (改訂や変更履歴など) を残したいケース
ハッシュ
ブロックチェーン概略図
Block
100002
Block
100001
前のブロック
000000000003ba27aa200b1c…
(ブロック 100000 のダイジェスト)
日時
2010/12/29 12:06:44
トランザクション ID
● bb28a1a5b3a02e76…
● fbde5d03b027d2b9…
● 8131ffb0a2c945ec…
● …
前のブロック
00000000000080b66c911bd5…
(ブロック 100001 のダイジェスト)
日時
2010/12/29 12:17:31
トランザクション ID
● ef1d870d24c85b89…
● f9fc751cb7dc3724…
● db60fb93d736894e…
● …
中身
参考: https://chainflyer.bitflyer.jp/v1/block/height/100001
ブロックチェーンに求められるもの
非機能要件
● 参加者が一定のルールに従って書き込むことができる
● 書き込まれたデータが、世界中のノードで読むことができる
● 正常な書き込み要求は必ずいつか処理される
● ルールに反するデータの書き込み要求は却下される
● ルールに従わない (正常な書き込みに応じない、不正な書き込みを受理する) ノー
ドが一定数いても動作する
非機能要件のようだが、本質的には違うと考えられるもの
● 改竄されたら検知できること (上記の当然の帰結)
● データの履歴が残ること (副次的に生まれた機能)
ブロックチェーンとは (再定義)
ブロックチェーンとは
1. 前スライドの要件を満たすデータ構造であり、
2. 1. を運用するシステムであり、
3. 2. を実現する技術の総称
である。
ここから、ブロックチェーンは
● 分散システムの一種である (i.e. 複数のサブシステムが協調する)
● 分散データベースの一種である (i.e. データ同期する)
といえる
単純なブロックチェーンの設計
状
態
0
状
態
1
状
態
2
トランザクション 1
トランザクション 2
トランザクション 3
ブロックに
集約
参
加
者
間
で
合
意
形
成
…
合意形成とは
目的は、分散システムの耐障害性確保のため、複数ノードに同一動作させること
ステートマシン レプリケーション問題 (複数の状態遷移機械が
同一に動作することを保証するため、入力するアルファベット
を同期させる) に帰着可
ノード 1
命令
A
ノード 2
命令
B
命令
A
ノード 1
ノード 2
命令
B
そもそも…
● ブロックチェーンが誕生するはるか昔から存在 (1980 年代)
● 分散ファイル システムなどで頻繁に利用 (有名なのは Spanner)
単純なやり方は、投票
合意形成とは
ラーメン
ノード A
ノード D ノード C
ノード B
ラーメン
ラーメン
次郎
ラーメン
投票だと、合意形成したあとに票の水増しをされたら意味がなくなる
Sybil 攻撃
ラーメン
ノード A
ノード D ノード C
ノード B
ラーメン
ラーメン
次郎
ラーメン
ノード
次郎
ノード
次郎
ノード
次郎
次郎
次郎
ノード
次郎
次郎 ノード
ノード
ノード
ノード
ノード
次郎
次郎
次郎
次郎
次郎
次郎
次郎
次郎
次郎
誰を (合意形成の) 参加者とするかの違いで次に分類できる
● パブリック型
常に、不特定多数の人が、新たに参加したり、離脱したりできる
● それ以外 (プライベート型 / コンソーシアム型 etc.)
合意形成をはじめる段階で、参加者が特定されている
とはいえ、パブリック ブロックチェーンを閉じたネットワークに構築したり、
ブロックチェーン外の認証機構をつけたりすることで、「プライベート
ブロックチェーン」として運用することもしばしば ...
非機能要件のひとつ
● 参加者が一定のルールに従って書き込むことができる
の参加者って誰?
参加者の定義
合意形成に求める性質
● 安全性 (Safety)
ある合意があったら、健全な全ノードでその合意が有効で、唯一である
● 活性 (Liveness)
合意形成を行おうとする場合、いずれ合意形成が完了する
非機能要件のひとつ
● 参加者が一定のルールに従って書き込むことができる
では、合意形成のルールに従わないノードがいた場合には?
ビザンチン耐性とは?
ビザンチン将軍問題は、東ローマ帝国(ビザンチン帝国)の首都コンスタンティノープルを攻略するオスマン帝国の将軍たちがそれぞ
れ軍団を率いて、ひとつの都市(コンスタンティノープル)を包囲している状況で発生する。将軍たちは、都市攻撃計画について合意
したいと考えている。最も単純な形では、将軍たちは、攻撃するか撤退するかだけを合意決定する。一部の将軍たちは攻撃したいと
言うだろうし、他は撤退を望むかもしれない。重要な点は、将軍たちはひとつの結論で合意しなければならないということである。つ
まり、一部の将軍だけで攻撃を仕掛けても敗北することは明らかで、全員一致で攻撃か撤退かを決めなければならないのである。ま
た、将軍たちは、それぞれ離れた場所に各軍団を配置しており、メッセンジャーを相互に送ることで合意を目指す。
引用元: Wikipedia 「ビザンチン将軍問題」
分散システムで、一部ノードがプロトコルに従わない可能性を考慮し、システムとして安
全性かつ健全性を保った合意形成ができる状態 (ビザンチン耐性)
とはいえ全ノード数の 1/3 以上が従わない場合は理論的に不可能
ブロックチェーンの合意形成
基本的に、参加者の中に合意形成のプロトコルに反する挙動をする人を前提
(ビザンチン耐性をもつ合意形成アルゴリズムが必要)
なぜか...?
● そもそも改竄防止のためのハッシュ チェーン自体が極めてコストの高いデータ構造
● それに見合うほどの信頼が必要な環境では、参加者間の合意も極めて厳格に行
われる必要がある
だいたいこんな感じ…
パブリック型 それ以外 (プライベートなど)
参加者
いつでも誰でも参加できる
(事前に特定することができない )
合意形成の参加者が
特定されている
安全性
ない
(あとから覆る可能性がある )
ある
(参加者間で合意は唯一 )
代表的な
アルゴリズム
Proof of Work
Paxos, Raft, PBFT,
Proof of Authority
ブロック内に Nonce と呼ばれる自由領域を用意し、ハッシュ値を調整できるようにした上で、ブロック
のダイジェストは先頭に0 が一定数続かなければいけないというルールを課した。ネットワークの計
算力に応じて、この数を調整することにした。(正確には difficulty パラメータによってダイジェスト値の最大値を指定)
ブロック作成者 (マイナー) は、上記のルールを満たすNonce を探さなければいけない。代わりに、
報酬をもらうことができる
専用ハードウェアにより現在は全世界で 1 秒間に 600 京回 (6×1018
) のダイジェスト計算が
行われている。10 分に一度の確率にするには 36 垓回に 1 回だけ成功するように調整
しなければいけない。これは先頭に 0 が 18 個続くのと同じ難易度
Nonce
1001
1002
1003
1004
1005
ブロック ダイジェスト
5b280ff64934df39…
4b33b9d69b6c53f1…
9fc09514d74d5d78…
f181b5ef17bdeaf2…
000000063f0d8704…
Proof of Work のおさらい
前ブロック …
日時 2009/1/3 …
Nonce ?????
トランザクション ID
… OK
前ブロック …
日時 2009/1/3 …
Nonce 1005
トランザクション ID
…
それでも万が一チェーンが分岐するようなことがあった場合には、どちらのチェーンを主
とするか、というルールを決める
Proof of Work のおさらい
ブロックを作るのを著しく難しくしておけば、
ネットワーク内で十分安定的に浸透する
それでも万が一、同時にブロックができたら、
どちらを主とするか比較ルールを決めておく
51% 攻撃
Proof of Work の仕組みを利用して、支払いをなかったことにしてしまう攻撃
● 最長チェーンと信じられているチェーン (メイン チェーン) 上に投資されてきた計算
資源を上回る計算資源で、別の分岐したチェーンを作ってしまう
● 別のチェーンがネットワークにブロードキャストされるとチェーン再構成 (reorg) が
発生して、元のメイン チェーンは無効になる
● 取引所にコインを送金し、法定通貨に換金して引き出したあと、reorg させてコイン
を手元に残しつつ、同価値の法定通貨を手に入れる
攻撃者が隠れて、強いチェーンをマイニングし、それを急に放出するケース
最長の分岐が優先されるルールを使えば、世の中が信じる
「メイン チェーン」を上回るペースでチェーンを伸ばし、
それを一気に放出することで、チェーンの再構成を誘発できる
51% 攻撃
51% 攻撃の実例など
● Bitcoin Gold
● MONA コイン
取引所では、コインの入金トランザクションが十分に安定したとみなすまで、取引を保留
扱いとして、攻撃が行われるのを防いでいる
攻撃にかかるコストを確認できる Web サイトもある
https://crypto51.app/
ブロックチェーンを走らせてみる
MinChain について
教育用ブロックチェーンとして Bitcoin を参考に作成したブロックチェーン
https://github.com/yutopio/MinChain
● 約 2,000 行程度の C# で実装
● MessagePack によるブロックやトランザクションのシリアライズ
● Proof of Work によるコンセンサス アルゴリズム
● 簡単なマイニング アルゴリズムの実装
● MIT License に基づく再利用・頒布可
MinChain のモジュール構成
Executor
Mining
KeyGenerator
Config
Genesis
ツール群
InventoryManagerConnectionManager
解釈前のブロック保持
Memory Pool 保持
InventoryMessage 処理
Executor ブロック通知
Listener 新規接続待ち受け
Peer 一覧を保持
特定ピアへの送信
ブロードキャスト
Message 受信コールバック
実行済みブロック保持
UTXO の追跡
未実行ブロック一覧保持
ブロック適用/ 取消
Runner
各モジュールの
初期化 / 終了
Program
エントリ ポイント
コマンド振り分け
動がしてみる
ビルドするには
git clone https://github.com/yutopio/MinChain
cd MinChain/MinChain
dotnet restore
dotnet build (既定で bin/Debug/netcoreapp2.0 にビルドされる)
動作させるには
dotnet genkey > key.json
dotnet genesis key.json genesis.bin
dotnet config > config.json (このあと config.json の編集が必要)
dotnet MinCHain.dll run config.json
鍵を生成する
ビルドしたバイナリがいるディレクトリに移動して実行
$ dotnet MinChain.dll genkey > key.json (自分のアドレス用の口座を作成する)
$ cat key.json
{
"pub": "WAAAAAEAAAAQAAAANAAAACAAAAAEj0MOwNeLA9b4gXYbURcyF5c8YPtZekJcliWafKduNy
AAAAACMFgRiBxSiu3wB3/g3biz9UN8zvNGI2n/HIg88EVn8A==",
"prv": "D4TuwVREhf5T3GTs4Y1psaUoHHKy3hb4gllunB2x5l8=",
"addr": "MDyDMxi1ynxe1206ANBRXWOjP7o/IeQHakRDilyYrtI="
}
Genesis ブロックを作る
$ dotnet MinChain.dll genesis key.json genesis.bin
Creating new genesis block.
{
"id": "00011702146098209132fa4990686f41f3e6b9859c607c1e5c93c0204ff9d8ec",
"prev": "0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": 2E-05,
"nonce": 2538555750346862341,
"timestamp": "2017-03-10T09:20:20.2375851Z",
"root": "DS5gHGHSJh0f5qmxgk2PDuI6a7J4LZ7pfy3K6JorH8U=",
"height": 0,
"txs": [
{
"id": "e44e859fe93bf48652b2dfc2386d987e544940f768379779da631fcd7206ac66",
"timestamp": "2017-03-10T09:20:19.5205851Z",
"in": [],
"out": [
{
"to": "303c833318b5ca7c5ed76d3a00d0515d63a33fba3f21e4076a44438a5c98aed2",
"val": 1000000
}
... (略)
key.json 記載のアドレスに
マイニング報酬を送るような
原始ブロックを作成し
genesis.bin に保存する
マイニングするので
少し時間かかる
config を作成する
$ dotnet MinChain.dll config > config.json
$ cat config.json
{
"listen": "0.0.0.0:9333",
"peers": [
"127.0.0.1:9333"
],
"keypair": "<YOUR OWN KEYPAIR>.json",
"genesis": "<GENESIS BLOCK>.bin"
}
前のステップで生成した
鍵ペアファイル (key.json) と
原始ブロック (genesis.bin) とに
それぞれ、ファイル名を変える
起動する
$ dotnet MinChain.dll run config.json
51% 攻撃を観測してみる
参考
日経ソフトウェア 7月号に今日の内容は載ってます
オンラインでもよめます
https://bizboard.nikkeibp.co.jp/kijiken/summary/20180524/NSW0258H_4066560a.html
まとめ
● ブロックチェーンは、分散データベースである
○ 合意形成アルゴリズムが必要
○ 参加者の定義: 不特定多数か否か、によってパブリック型かどうかが変わる
○ ビザンチン耐性を備えた合意形成を用いるのが一般的
● 51% 攻撃
○ Proof of Work で可能な攻撃
○ 攻撃者が長いチェーンを作成し、一気に放出するだけ
○ 成功すると、意図的に取引をなかったことにできてしまう
● MinChain
○ https://github.com/yutopio/MinChain
○ Bitcoin タイプのブロックチェーンの簡単なモデル
○ attack ブランチに、攻撃のシミュレーションが入っている

More Related Content

What's hot

What's hot (20)

Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラ
 
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?
 
Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向
 
WiredTigerを詳しく説明
WiredTigerを詳しく説明WiredTigerを詳しく説明
WiredTigerを詳しく説明
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 

Similar to 51% 攻撃の原理とシミュレーション

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
 

Similar to 51% 攻撃の原理とシミュレーション (20)

51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
 
Blockchain innovation
Blockchain innovationBlockchain innovation
Blockchain innovation
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
ブロックチェーンの基礎及びNEM / Symbolブロックチェーンのご紹介
 
プログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とはプログラマ目線で見た “The DAO事件” とは
プログラマ目線で見た “The DAO事件” とは
 
Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方Azure 障害との上手な付き合い方
Azure 障害との上手な付き合い方
 
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
(インテージテクノスフィア)FY20_技術探究委員会_ブロックチェーン分科会活動報告
 
いまさら聞けない SegWit と Bitcoin Unlimited について
いまさら聞けない SegWit と Bitcoin Unlimited についていまさら聞けない SegWit と Bitcoin Unlimited について
いまさら聞けない SegWit と Bitcoin Unlimited について
 
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdfcomparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
 
Blockchainベーシック
BlockchainベーシックBlockchainベーシック
Blockchainベーシック
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
 
プラットフォームとしてのブロックチェーン
プラットフォームとしてのブロックチェーンプラットフォームとしてのブロックチェーン
プラットフォームとしてのブロックチェーン
 
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
0からはじめるWeb3入門(WEB1.0 / WEB2.0 / BLOCKCHAIN / Bitcoin / Smart contract / DeFi ...
 
電子署名(PKI)ハンズオン資料 V1.00
電子署名(PKI)ハンズオン資料 V1.00電子署名(PKI)ハンズオン資料 V1.00
電子署名(PKI)ハンズオン資料 V1.00
 
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)
 
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
 
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入
 
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
Blockchain EXE Nagoya #1:ブロックチェーンを応用したデータ流通ネットワークの取り組み(今井 悟史 / 富士通)
 
脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君脆弱なコードを書いたブタ君
脆弱なコードを書いたブタ君
 

More from Yuto Takei

More from Yuto Takei (20)

これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
 
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
 
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
 
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 ブロックチェーン神話に迫る - 本当に使える? 使えない? ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
 
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
 
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
 
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
 
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
 
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
 
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
 
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
 
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
 
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
 
[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル[Basic 8] プロセスとスレッド / 入出力 / シェル
[Basic 8] プロセスとスレッド / 入出力 / シェル
 
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
 

51% 攻撃の原理とシミュレーション