2019-01-01から1年間の記事一覧
openssl1.1にはed25519だけでなくed448も追加された。 TLS1.3についてのWEB+DB Pressの記事見てたらed448がなんだかとても速いらしい。 素数の選び方に工夫が入っていて、乗算のモジュラ計算の2乗部分の計算が省略できるのが主要因のようだ。 だが、あまりに…
openssl 1.1.1にてed25519の鍵が作れるようになったようです。 www.openssl.org OpenSSL/genpkey - NORK's "HOW TO..." Wiki 略して「のうはうWiki」 macOS10.14.4のbrewではまだバージョンが1.0なので、1.1のバージョンのopensslをインストールします。 $ b…
ハッシュ関数の一つにSipHashがあります。 128ビットのキーと任意長のデータを入力として、64ビットまたは128ビットを出力するハッシュ関数です。 SHA1は、攻撃者がX, SHA1(X)を知っている時、SHA1(X)=SHA1(Y)となるYを求めるのが難しいという特徴を持ちます…
暗号化 プライバシーを救った反乱者たち作者: スティーブン・レビー,斉藤隆央出版社/メーカー: 紀伊國屋書店発売日: 2002/02/16メディア: 単行本購入: 4人 クリック: 14回この商品を含むブログ (26件) を見る ホイットフィールド・ディフィーとマーティン・…
量子コンピュータの原理を調べているが、結局のところ、使っている数学は、線形代数と離散フーリエ変換くらいである。 この記事では、ドイッチのゲートの計算を確かめる。 なお、基礎的な量子論理ゲートである、アダマールゲート、制御ユニタリゲート、制御N…
/usr/bin/certbot renew このコマンドが以下のエラーで動きません。 Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/on…
モジュラ計算を効率よく行うアルゴリズムの一つに Barrett modular reduction がある。 これを解説してみる。 xとmが与えられたとき、 を計算したい。 であるbを選び、mをb進数で以下のように表現するとkが定まる。 ここで と仮定する。このアルゴリズムでは…
XVim2というXcodeプラグインのメンテをやっている。 antmdさんによってXcode9に対応され、そこそこ動くようにはなったが、 バージョンアップのたびにどこか壊れるので、PullReqを投げていたら、コミット権を渡された。 XVim2はXcodeでvimキーバインドを使う…
rust のクレートの一つに croaring::Bitmap というものがある。 Bitmapとは、任意のサイズで1と0の値を持たせたデータ構造のことである。 例えば、u64 の型は 64のサイズのBitmap型であるといえるが、任意のサイズで使えるようにしたものがBitmapである。 こ…
swift には多数のprotocolが定義されており、これを理解し有効に活用することで、読みやすいコードを書くことができる。 rustにも同じように多数のtraitが定義されている。swiftに比べて、かなり多くのtraitが定義されているが、 マイナー言語ゆえに、日本語…
rust で正の奇数を小さい方から返すイテレーターを作ります。 iterator トレイトの定義は以下の通りです。 trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>; } https://doc.rust-lang.org/std/iter/trait.Iterator.html ドキュメンテーションでは</self::item>…
Cuckoo Hashing とは、ハッシュテーブルの構造の一種である。 カッコウ(Cuckoo)には他の種類の鳥の巣に卵を置き、元々あったその鳥の卵は破棄するという習性があるが、 命名はそこから来ている。 まず、一般的なハッシュテーブルの作り方を考える。 8個の要…
ECDSA署名とECSchnorr署名の概略メモです。 群や体の演算など、些細な部分は省略し、核となるロジックだけを記載しています。 楕円曲線上の点は大文字、スカラー値は小文字で表現します。 点Aのx,y座標はと表現します。 ECDSA署名 <共有情報> G:ベースポイン…
こちらにgrinのトランザクションフローについての図が上がっていたので、テキストに落としておく。 まだソースを追っているところだったが、このフロー図で理解が進みやすくなる気がする。 この図はどこから入手したんだろ。 MimblewimbleとGrinのトランザク…
rustでの?演算子はResultの処理を簡略化した機能を持つ。 戻り値としてResultを持つ関数内で利用することができ、 Resultを生成する式の後ろにつけることができる。 ?をつけた場合は式の結果がSuccessだった場合はその値をunwrapして処理を継続する。 Error…
grin はかなりの数の外部 crate を利用しています。 セキュリティ上重要な部分は当然自前実装かつセキュリティ監査をしたらしいです。 rust は脆弱性が入り込みにくいとはいえ、何らかの不備が見つからないとも限らないので、まさに実験的プロジェクトです。…
rust の trait は大雑把に言って、swift の protocol に相当する。 以下サンプルを見てみよう。 fn main() { let mut bicycle = Bicycle { pos: 0 }; bicycle.forward(); } struct Bicycle { pub pos: i32 } trait Movable { fn forward(&mut self); } // Bi…
ios の target を追加してからビルドします。 $ rustup target add x86_64-apple-ios $ cargo build --target x86_64-apple-ios cargo.toml [lib] name = "blake2rustios" crate-type = ["staticlib"] これでstatic libraryが生成されるようです。 他、細か…
secp256k1_zkpライブラリの関数概要のメモです。 スカラー値は小文字、楕円曲線上の点は大文字で表現します。 未調査の部分は?としてあります。 /// seedを指定してハッシュ関数を通した点を返す // 同じseedを指定した場合、いつも同じ点が返されることが保…
secp256k1のC89実装のライブラリの関数のメモです。 GitHub - bitcoin-core/secp256k1: Optimized C library for EC operations on curve secp256k1 秘密鍵はスカラー値であり、sと表現することにします。 sは1以上secp256k1の群位数N未満である必要がありま…
MimbleWinbleペーパー 2016年 http://diyhpl.us/~bryan/papers2/bitcoin/mimblewimble.txt Block Stream社のAndrew Poelstra氏によるMimbleWimble解説の日本語訳 btcnews.jp GrinのMimbleWinble概要解説 grin/intro_JP.md at master · mimblewimble/grin · G…
現在の最新バージョンは1.32です。 stableな機能のみしか使わない場合は、brew でインストールしてもよいです。 $ brew install rust nightly の機能を使う場合は rustup を使います。 まずは、brew でインストールしたrustをアンインストールします。 $ bre…
C言語とは配列長部分の定義順序が逆になります。 3 x 2の2次元配列 const A: [[u8; 2]; 3] = [ [0x01, 0x02], [0x03, 0x04], [0x05, 0x06] ]; プログラミングRust作者: Jim Blandy,Jason Orendorff,中田秀基出版社/メーカー: オライリージャパン発売日: 2018…
rust は並列処理が作りやすい言語である。言語レベルで完全にスレッド安全性が担保されていると言って良いだろう。 以下は0から15の値の合計を4つのスレッドを使って計算するrustのソースである。 extern crate crossbeam; fn main() { let mut sum0: u64 = …
macOS grin-miner でCPUマイニングを試したときの手順メモです。 結果的にハッシュパワーが足りずマイニングはできませんでした。 ビルド grin 本体とgrin-minerをクローンしてビルドします。 $ git clone https://github.com/mimblewimble/grin.git $ cargo…
ウォレットをテキストファイルに出力する。 $ bitcoin-cli dumpwallet pebble8888wallet.txt { "filename": "/Users/pebble8888/Library/Application Support/Bitcoin/pebble8888wallet.txt" } $ cat pebble8888wallet.txt # Wallet dump created by Bitcoin…
SageMathを使います。 計算の都合上x一つに付きy一つの点のみとしています。(※1) q = 2**256 - 2**32 - 977 K = GF(q) i = 1 for x in range(0, 1000): try: n = (x ** 3 + 7) % q y = K(n).nth_root(2) print("P"+str(i)+": ("+str(x)+","+str(y)+")") if i…
secp256k1のベースポイントの性質をみていきます。 有理点(x, y)はおよそ256ビットの範囲内で均等に値がばらけていると考えられます。 ベースポイントGの倍数 を計算したときのx, yの値はおよそ256ビットの値がランダムに並んだようになりますが、たまたま端…
macOS 10.14.2 mojave に bitcoin core をインストールしてみます。 testnet で550MBのプルーンモードで起動させるので、ディスク容量の空き容量はは2GBあればよさそうです。 (550MBを指定しても2GBのサイズになる理由は分かっていません。) mainnet で起動…
ほぼpythonと同じ構文と考えておけばよいです。 100未満の素数を出力する sage: x = 1 sage: while x < 100: ....: if x.is_prime(): ....: print(x) ....: x = x + 1 ....: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 プログ…