nptclのブログ

Common Lisp処理系nptの開発メモです。https://github.com/nptcl/npt

2024-01-01から1年間の記事一覧

AES-GCMの乗算を実装する

1. はじめに 共通鍵暗号であるAESの、 なんかよさそうな方式にGCMというものがあります。 こいつの乗算だけを実装します。 最初に言っておきますが理論は説明しません、というかできません。 知らないし。 ここで説明するのは、どうやって実装するかです。 …

C言語で楕円曲線DSAを実装する

タイトルの通りC言語で楕円曲線DSAを作りました。 https://github.com/nptcl/fixed 作成した曲線は次の通り。 secp256k1 secp256r1 ed25519 ed448 Cのサンプルコードみたいな扱いだと思ってください。 以前、Common Lispで作成したもをそのままC言語にしてい…

Common Lispで楕円曲線DSAを実装する6(署名)

前回の続きからです。 Common Lispで楕円曲線DSAを実装する5(鍵生成) - nptclのブログ 9. 署名と検証 DSAの機能である、署名と検証を行います。 9.1. 署名 署名の方法は、ECDSAとEdDSAで違います。 ECDSAは、署名の計算でメッセージを一度しか使わないのに…

Common Lispで楕円曲線DSAを実装する5(鍵生成)

前回の続きからです。 Common Lispで楕円曲線DSAを実装する4(確認) - nptclのブログ 7. DSAとは何か あまりにも今さら過ぎますが、DSAの説明をします。 DSAとは、ディジタル署名アルゴリズム(Digital Signature Algorithm)だそうです。 ディジタル署名とは…

Common Lispで楕円曲線DSAを実装する4(確認)

前回の続きからです。 Common Lispで楕円曲線DSAを実装する3(乗算など) - nptclのブログ 6. 演算のテスト ここまで来たらちゃんとテストします。 次の機能が正常に機能することを確認しましょう。 加算 addition 2倍 doubling スカラー倍 multiple 演算の…

Common Lispで楕円曲線DSAを実装する3(乗算など)

前回の続きからです。 Common Lispで楕円曲線DSAを実装する2(加算) - nptclのブログ 5. その他の演算 次の演算をやります。 乗算 逆数 アフィン座標への変換 平方根 あとでいっぱい使います。 5.1. 乗算 乗算を行います。 乗算は本当にいろんなところで使…

Common Lispで楕円曲線DSAを実装する2(加算)

前回の続きからです。 Common Lispで楕円曲線DSAを実装する1 - nptclのブログ 4. 加算 楕円曲線暗号の加算を行います。 なんでいきなり加算なんだと不思議に思う方には申し訳ありません。 自分では説明できません。 わかんなくても、やっていけば後で使いま…

Common Lispで楕円曲線DSAを実装する1

1. はじめに 楕円曲線暗号について勉強していたのですが、全然わかりませんでした。 でも得られたこともありました。 もし楕円曲線暗号の実装に興味があるのであれば 楕円曲線DSAがおすすめです。 なぜなら作り方がRFCに丁寧に載っているから。 強調しますが…

FreeBSD+qemuでNetBSD sparc64を動かす

1. はじめに NetBSD sparc64を動かしたいです。 何のためかというとBig Endianの環境が欲しいのです。 残念ながらうちにはsparc64の実機がないので、 その辺に転がってるFreeBSD amd64を使います。 2. NetBSDのインストール まずはFreeBSDにqemuを入れます。…

Amazon EC2にFreeBSD ARM64を安く構築する

1. はじめに ずっとBig Endianの環境を作りたいと思っていました。 ということでAmazon EC2というサービスを使って ARM64環境を整えようと思ってたのですが、 すべてが終わったあとに気が付きました。 実はLittle Endianだったということに。 もはやどうでも…

C言語でSHA-3を作る

SHA-3は公式でC言語のソースがあります。 なので、いまさら自分が作ったところで目新しいことはないのですが、 これから自分でSHA-3を作ろうと思っている人がいるなら その人のために、一言二言残そうかと思います。 一応、自分が作ったものの紹介をしておき…

C言語でRSAのコードを作る

1. はじめに C言語でRSAのコードを作りました。 それがここ。 https://github.com/nptcl/fixed めちゃくちゃ大変でした。 しかも大変だったのはRSAもそうですが、 それ以外の部分です。 今回は以前作成したCommon Lisp nptのbignumを流用してRSAを作成してい…