One or Zero?

興味のある様々なことについて

1日1TryHackMe

今日から、とりあえず7月いっぱい、TryHackMe のタスクを進めるというタスクを自分に課す。 頻度は最低2日に1つ。目標は低く。

今日は Burp Suite の Room の Task6: Proxy を完了した。

tryhackme.com

このタスクを自分に課す理由は、自分がサイバーセキュリティ(特に Offensive Security)関連の仕事を好きになれるかどうか確かめるという側面が強い。 サイバーセキュリティに昔から憧れはあり、特に Offensive Security の知識や技術を持っていることは、国家が核兵器を持っていることと同じで、社会で生存していく上で役に立つと思っている。

しかし憧れと好きは別物で、現時点で「サイバーセキュリティが好き」とはとてもではないが言える状態ではない。といっても人間の好き嫌いというのは案外ぼやっとした掴みどころのない概念で、好きだと思い込めば好きなのだ。好きだと思うためには腰を据えてやってみないとなれないのだ。

ということで、ひとまず1 ヶ月やってみます。 好きになれそうにない、サイバーセキュリティは人生で苦しみしか産まないと思ったら、スッパリやめます。

Twitter で、ツイートの status_id しか分からないときに URL を知る方法

例えば、以下のような status_id だけを知っているときってありますよね。

1249127951154712576

その status (tweet) のURLを知りたいときは、2021年1月現在では、 https://twitter.com/twitter/status/STATUS_ID にアクセスすると、元のツイートのURLにリダイレクトしてくれます。

https://twitter.com/twitter/status/1249127951154712576

以上です。

"No this, no that" から理解する MimbleWimble

MimbleWimble の wiki に、"No this, no that" と呼ばれる標語のようなものを記したページがある。

no addresses
no visible amounts
no transaction history
no reward changes
no fixed supply
no deflation
no trusted setup
no ring sigs
no moon math
no hashcash
no asic aversion
no ico
no premine
no instamine
no mining tax
no masternodes
no room for spam

他の暗号通貨にはあるこの要素は MimbleWimble にはない、というものが羅列されている。それだけシンプルさを重視したブロックチェーンだと言えるだろう。 この中からいくつかをピックアップして、MimbleWimble の技術について見てみよう。

no addresses

MimbleWimble には address という概念がない。ではどのように送金を行うのか。 MimbleWimble の送金では、ウォレット同士がインタラクティブにやり取りをしなければならない。Bitcoin においては、transaction は sender が送信先アドレスをもとに一人で作成するが、MimbleWimble の transaction では sender と receiver 互いに協力して transaction をつくる。

さらに言えば、transaction はブロックに取り込まれた時点でもはや transaction という単位としては存在しない。input と output があるだけである。

no visible amounts

MimbleWimble では、送金額はブロックチェーンに直接刻まれることはない。

Pedersen commitment という、データ(ここでは送金額)を blinding factor と呼ばれる秘密鍵をもちいて秘匿した

commitment = r*G + v*H

だけがブロックチェーンに刻まれることになる。ここで、G, H楕円曲線上の群の異なるジェネレーター、 r が秘匿するデータ、v が blinding factor である。

no transaction history

no address のパートでも述べたように、ブロックに取り込まれた時点ですでに transaction という単位はなくなっている。cut-through と呼ばれる処理によって input と output のつながりを切る。 Grin のドキュメントにわかりやすい図がある。

no hashcash

MimbleWimble のコンセンサスアルゴリズムは PoW だが、Bitcoin のような hashcash ではない。hashcash は計算能力の高いGPUなどが有利だが、MimbleWimble では現時点で Cuckoo Cycle という、メモリが重要になってくるPoWアルゴリズムを使用している。

BitAuth の仕組み

(追記)以下で説明している BitAuth は、 BitAuth 1.0 であって、最新の BitAuth 2017 とは仕様がかなり異なります。

BitAuth は、Bitcoin と同様の楕円曲線暗号を用いた、認証の仕組みである。bitpayによって開発された。

続きを読む

Bitcoin のブロックの構造

Bitcoin の Block は、以下の表のような構造になっている。

Magic number はデータ構造のタイプを即座に判断できるように設定された定数らしいBitcoin の Block においては、常に 0xD9B4BEF9 であるとのこと。

Blocksize はその名の通りBlock 全体のサイズ(数字)。Blockheader がこの中だと最も重要(?) で、いろいろなデータが含まれている(後述)。 Transaction counter はトランザクションの数、残りはトランザクションのリストが含まれている。

Size Name Description
4 bytes Magic no always 0xD9B4BEF9
4 bytes Blocksize the size of entire block
80 bytes Blockheader consists of 6 items
1-9 bytes Tx counter n > 0
Variable Transactions the list of transactions

その中でもBlockheader は6つの要素から構成されている(https://en.bitcoin.it/wiki/Block_hashing_algorithmより)。

Field Purpose Updated when... Size (Bytes)
Version Block version number You upgrade the software and it specifies a new version 4
hashPrevBlock 256-bit hash of the previous block header A new block comes in 32
hashMerkleRoot 256-bit hash based on all of the transactions in the block A transaction is accepted 32
Time Current timestamp as seconds since 1970-01-01T00:00 UTC Every few seconds 4
Bits Current target in compact format The difficulty is adjusted 4
Nonce 32-bit number (starts at 0) A hash is tried (increments) 4

それぞれの役割はPurpose を読めば分かるので省略する。ここの表には出てこなかったが Block Explorer を見てみると、これら以外にもBlock Height(ブロック高)があるが、これは hashPrevBlock(一つ前のBlockhash)をたどっていき、Genesis Block まで数えることで算出しているのだろう。

(WIP) LightningNetwork の状態を更新する新たな仕組みである eltoo について

4月30日、Blockstream によって eltoo と呼ばれるプロトコルがアナウンスされたので、それについてまとめてみる。

注)Work In Progress です。また、短期間でパパっと書いた記事なので技術的に誤りを含む可能性があります。update していく予定ですので 、ご留意&ご指摘願います。

続きを読む