Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

cryptに関するsfujiwaraのブックマーク (6)

  • 鍵生成には暗号論的に安全な乱数を使おう

    SSHの鍵生成には暗号論的に安全な疑似乱数を使おうという話。 暗号論的に安全ではない疑似乱数がどれだけ危険かというのを、簡単なCTFを解くことで検証してみました。 背景 SSH公開鍵に自分の好きな文字列を入れる、という記事を読みました。 かっこいいSSH鍵が欲しい 例えばこのSSH公開鍵、末尾に私の名前(akiym)が入っています。 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFC90x6FIu8iKzJzvGOYOn2WIrCPTbUYOE+eGi/akiym そんなかっこいいssh鍵が欲しいと思いませんか? かっこいい!真似してみたい! そこまではいいんですが、問題は実装です。 秘密鍵を生成する際の乱数生成には高速化のために Goのmath/randを使っていますが、乱数が用いられるのは公開しない秘密鍵自体であり、このアルゴリズム自体はLagged Fib

  • /etc/shadow のパスワードフィールド - JULY’s diary

    question:1299688445 を切っ掛けに、/etc/shadow ファイルのパスワードフィールドを調べてみたら、思いの外、複雑な処理をしているのが分かったので、実際にこの処理を追いかけてみました。 近頃の UNIX 系 OS の /etc/shadow のパスワードフィールドは、実際にはいくつかのハッシュ関数を選べる事になっています。 Crypt (Unix) - Wikipedia UNIX 系 OS には、crypt という C 言語用の関数が用意されていて、伝統的には DES を使った処理でパスワードフィールド用の文字列を生成していたのですが、この関数自体を拡張することで、MD5 や SHA-256、512 といったハッシュ関数を使う処理も出来るようになっています。どの方式を使っているかは、パスワードフィールドの文字列の先頭にある「$1$」といった部分で判断します。 先頭

    /etc/shadow のパスワードフィールド - JULY’s diary
  • Crypt::DH::GMPを作った - D-6 [相変わらず根無し]

    Crypt::DH::GMPを作った id:tokuhiromにそそのかされれてCrypt::DH::GMP (リンクはそのうち出現します)書きました。Crypt::DHってモジュールがあって、これに依存するモジュールが少々あるわけですが、このモジュールがすこぶる遅いわけですな。なんで遅いかというとこのモジュールは裏でMath::BigIntを使っているから。Math::BigInt自体はいわゆる任意精度数演算ライブラリで、これをポータブルな方法でPerl上で動作させるにはとてもよくできたモジュールです。 が。遅い。 裏でlibgmpやPari等を使っても、それでも遅い。その理由は単純で、Math::BigIntを使うと裏で何回も何回もSV -> mpz_t -> SV等の変換を含めた、「Perlらしい手法が実現できるための処理」が行われるからです。 Crypt::DHのソースコードを読む

  • 公開鍵暗号ソフト「GnuPG」のオールインワン・パッケージ

    Gpg4winは,公開鍵暗号を使って電子メールやファイルを暗号化するソフト「GnuPG(GNU Privacy Guard)」のWindows版と,GnuPGをWindows上で利用するときに便利なユーティリティを1パッケージにまとめたソフトウエアです。フリーの公開鍵暗号ソフトとしてはPhilip R. Zimmermann氏が開発,公開した「PGP(Pretty Good Privacy)」が有名です。GnuPGは,PGPをベースとした標準仕様「OpenPGP(RFC2440)」を実装したソフトウエアです。一部が特許で保護されているPGPと異なり,GnuPGはフリーのアルゴリズムだけを使用しており,個人利用,商業利用の区別なく無償で利用できます。 GnuPG体はコマンドラインのツールですが,Gpg4winには,GUIでGnuPGを操作するフロントエンド・ソフトとして「GPA(Gnu P

    公開鍵暗号ソフト「GnuPG」のオールインワン・パッケージ
  • mixi Engineers’ Blog » OpenSSLの暗号文をJava/Perl/Rubyで開く

    秘密鍵やプライベートな情報などを秘匿するためにパスワードでデータを暗号化・復号したい場合があります。このとき、暗号化と復号するアプリケーションが同じであれば簡単ですが、例えばCで暗号化してJavaPerlRubyで復号するといった風に異なるプラットフォームで暗号データをやりとりする場合には、いくつか気 をつけなければいけないポイントがあります。 OpenSSLによる暗号化 OpenSSLはWebサーバのSSL/TLSサポートに利用されますが、その他にも付属しているopensslコマンドから基的な暗号アルゴリズムを利用できます。次のような簡単なコマンドで、パスワードを使ってデータを暗号化したり復号したりすることができます: $ echo 'Hello World!' | openssl enc -e -aes-128-cbc > cipher.txt enter aes-128-cbc

    mixi Engineers’ Blog » OpenSSLの暗号文をJava/Perl/Rubyで開く
  • 100% Pure JavaScript Camellia - mixi engineer blog

    NTTと三菱電機が共同開発した共通鍵ブロック暗号 "Camellia" の実装について以前調査していた時、ついカッとなってJavaScriptで実装してしまいました。類似の実装も既にあるようですし今は反省しているのですが、死蔵しておくのもナンなので晒しておきます。 ソースコードと使い方 小ネタなので、このソースコードはpublic domainということにしますね。 CryptoCipherCamellia-js-1.0.2 CryptoCipherCamellia.jsは128-bitブロック暗号Camelliaのプリミティブの実装と、暗号利用モードとしてCBCモードの実装を含んでいます。例を簡単に示すと次のような感じです: var SECRET_KEY = CryptoUtil.arrayFromHex( "00112233445566778899AABBCCDDEEFF"); var

    100% Pure JavaScript Camellia - mixi engineer blog
  • 1