タグ別アーカイブ: 関数

レインボー攻撃とは | 日立ソリューションズの情報セキュリティブログ

パスワード破りの一つで、ハッシュ値に変換されたパスワードを解析する攻撃手法のこと。

データの改ざん検知やデジタル署名などに使われているハッシュ関数は、一方向性関数とも呼ばれており、ハッシュ値から入力値を再現することはできず、また、同じハッシュ値を持つ異なるデータを作成することは極めて困難である。そのため、パスワードのハッシュ値のみをサーバー上で管理しておけば、パスワードそのものが漏えいすることがなく、安全にパスワード管理を行うことができるようになる。代表的なハッシュ関数のアルゴリズムには、MD5やSHA-1などがある。

レインボー攻撃は、あらかじめパスワードとなりうる適当な文字列のハッシュ値を計算してテーブル化しておくことで、ターゲットとなるパスワードのハッシュ値と比較し、本来のパスワードを推察するものだ。一つずつ検証するには時間がかかるため、事前に膨大な数のハッシュ値をテーブル化しておくことが必要になる。

レインボー攻撃への対策としては、総当たり攻撃(ブルートフォースアタック)や辞書攻撃といった他のパスワード解読攻撃への対策と同様、数字や記号を混ぜてパスワードを設定したり、定期的にパスワードを変更したりするなどの運用が大切だ。

引用元: レインボー攻撃とは | 日立ソリューションズの情報セキュリティブログ.

ソルト(salt)とは | 日立ソリューションズの情報セキュリティブログ

ソルト(salt)とは、パスワードを暗号化する際に付与されるデータのこと。

通常、パスワードを保存する際には、何らかの「非可逆処理」を行うことが多い。例えば、ハッシュ関数と呼ばれる一定の関数により算出されたハッシュ値などが代表的なもので、ハッシュ値から入力値(平文のパスワード)を再現することはできない。

しかし、予め任意の文字列をハッシュ値に変換しておき、標的のパスワードのハッシュ値と比較することでパスワードを推察する「レインボー攻撃」というパスワード破りの手法がある。こうした攻撃に対し、ランダムなデータをパスワードに付与してから非可逆処理を行うと、同じパスワードであっても、算出されるハッシュ値は違ったものになり、パスワードを解析されにくくする効果が期待できる。この付与されるデータをソルトという。

ソルトは、総当たり的にハッシュ値を計算する「ブルートフォース攻撃」のような手段にはほとんど効果はないものの、予めハッシュ値を計算しておくレインボー攻撃に対しては有効に作用する対策の一つといえる。レインボー攻撃は、ブルートフォース攻撃に比べ相当短時間でパスワードを解読することが可能であるため、そこを防ぐことには大きなメリットがあるといえるだろう。

引用元: ソルト(salt)とは | 日立ソリューションズの情報セキュリティブログ.

[asin:415209236X:title] – I 慣性という名の惰性 I

「ただし、ある点で『図書館への延滞金の導入』は興味深い可能性も秘めているのではないかと考えている。それが予想の後半部分だ。

「『支払う額によって購読可能期間が異なる電子書籍』というものがあるとしよう。一週間なら100円、2ヶ月なら500円といった具合だ。実際、視聴可能な期間によって料金が異なる動画サービスはいくつもある。電子書籍なら購読可能期間の制御は簡単に実装できる。

「さてこのようなシステムを想定した場合、【図書館に支払う延滞金で確保できる期間】と【書籍の支払額に応じた購読期間】との比較が可能となる。どちらも『自分はこの本を読むのにどれくらいの期間が必要か』という(予想)時間の関数で記述が可能だ。この場合、定価が上限となり、定価を支払えば読むために無限大の時間を購入したことになる(逆に定価分の延滞金が発生したら、その書籍を買い取る権利を得たことになるかもしれない)。

「こうやって書籍の価格を購読期間という時間概念で置き換えると、【定価】というのは読み終わらなくてもいいという【怠惰権】【放置権】の値段を意味するのである。

「つまり現在の書籍の定価売り切りシステム(と延滞金のない図書館システム)は、皮肉にも購読者に『その本を読まなくてもいい』というオプションを与えてしまっている。購読可能期間に応じたよりきめ細かい価格を設定すれば、実は書籍の読了インセンティブは現状よりも高くなることが予想される。これは明らかに人類の知的厚生を改善することになる」

引用元: [asin:415209236X:title] – I 慣性という名の惰性 I.

精度95%以上! ソースコードは指紋、作者はほぼ特定できる : ギズモード・ジャパン

スペースやタブ、大文字やアンダーバーを組み合わせた命名規則、コメント…コードの書き方には、人によってスタイルがありますよね。それはもう指紋のようなもので、それさえ見えれば、誰がコードを書いたかほとんどわかってしまう…そんな驚きの研究結果が発表されました。

米ドレクセル大学、メリーランド大学、プリンストン大学、独ゲッティンゲン大学の共同チームの研究によると、自然言語処理と機械学習によるコード分析により、95%の精度で作者は特定できるそうです。

解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などのクセ以上のものを探し出し、作者を特定するカギにする、というわけです。

研究チームが開発した機械学習ソフトウェアで、Google Code Jamに公開されているコードの分析を試しに行ってみたところ、あるひとりの人が書いた630行のコードを分析すれば、95%の精度でその作者が特定できたそうです。コードの行数を増やして1,900行にすると、特定の精度は97%になるとか!

このコード解析、すぐに使えそうな分野が思い浮かびますよね。そう、当局がハッカーを見つけたり、オンライン詐欺の犯人を特定したり、という使い方です。あと、他人のコードをちょっと拝借、なんていうケースもバレちゃったりするんでしょうか。「特定されたら困る!」という人は、今から誰かのコードの書き方をそっくりマネする練習を始めた方がいいかもしれない…ですかね?

引用元: 精度95%以上! ソースコードは指紋、作者はほぼ特定できる : ギズモード・ジャパン.

ペンギン許さん – hitode909の日記

たとえばペンギンクラスを作るとき、まずペンギンクラスを定義する。と言うと、いや待ってください、ペンギンは鳥ですから、鳥から継承させましょう、とかそういう話になる。

継承すると、ポリモーフィズムという技を使えて、鳥を受け取る関数に鳥でもペンギンでも渡せるようになったり、鳥の機能をペンギンが獲得して、足の数は?とか聞くと2とか返ってくる。

便利だけど、鳥でもペンギンでも共通して足の数を知りたいアプリケーション以外でそういうことをし始めると、きりがなくなって、哺乳類クラスが登場したり、生命の樹みたいになって最悪の継承ツリーが出来上がる。

アプリケーション的に意味ない限りは、クラスを作ったり継承したりしてはいけない。そのうち役立つかと思って作りたくなる気持ちは分かるけど、必要になってから作れば良い。大体の場合、後世の人たちが、このクラスなんであるんだろって迷うのにかかるコストの方が高い。

引用元: ペンギン許さん – hitode909の日記.

RDS for Oracleでのsysdateに要注意 | Developers.IO

RDSに限らず、EC2もデフォルトのタイムゾーンはUTCになっています。EC2の場合はOSにログインできるため、Linuxの場合なら下記コマンドでUTCからJSTにタイムゾーンを変更することが可能です。

1

ですが、RDSではOSのタイムゾーンを変更することは不可能です。OracleのsysdateはOSの時刻を返すため、sysdateを利用して取得する値はUTCでの値が帰ってくることになります。

sysdateはOracleを利用してアプリ開発する上では呼吸をするように自然に使う関数だと思います。しかも、既存アプリの場合はJSTでデータが取得できることが前提の作りになっていることが多いと思いますので、その前提が崩れるとなると単純移行では済まなくなってしまいます。

新規開発の場合は、「DBのタイムゾーンはUTCになるから、アプリで変換してねー」で済む話のですが、 *1既存アプリを移行する場合はどういった対策を打てばいいのでしょうか。以下に3点を示してみました。

引用元: RDS for Oracleでのsysdateに要注意 | Developers.IO.

リクルートが競合になった時の傾向と対策(自分用) – MUGENUP社長のまとめブログ

さて、起業して一番を目指そうと事業を育てていくと大体目の前に表れるのが、リクルートさんです。リクルートさんのカヴァー率は本当にすごいと思います。そんなリクルートさんの隙をついて勝ってきた会社さんや領域を見て個人的に思ったことは

リクルートさんに勝つためには

•リクルートさんが寡占していない領域で

•フロービジネス(線形ビジネス)ではなく、ブランドやデータベースなどアセットビジネス(指数関数ビジネス)を構築し

•オペレーショナルなシステムを築き、リクルートさんが人を増やすより先にスケール出来る様にする。

ということだと思います。

CGMやSEOマーケティングメディアとして成功されたリブセンスさんや、ブランドと求職者DBにアプローチ出来るモデルを確立されたビズリーチさん、バーティカルメディアを展開され最終的にリクルートさんのメディアも参加させたじげんさんなど、アセットビジネスとして固い基盤を作り、規模とスケールするスピードで存在感を出されているかと思います。

引用元: リクルートが競合になった時の傾向と対策(自分用) – MUGENUP社長のまとめブログ.

タグ検索するならPostgreSQLで決まり! | yohgaki’s blog

PostgreSQLを使うとWebアプリでよく利用するデータを効率的に保存・検索できます。タグデータの保存と検索もその一例です。GINに似たインデックスにGiSTがあります。違う特徴を持っているのでGiSTが便利な場合もあるでしょう。

PostgreSQL 9.2からJSON型がサポートされました。PostgreSQL 9.3からはJSON型サポートが強化されオペレータや関数が追加されました。PostgreSQLは関数インデックスもサポートしています。関数インデックスを利用すると、JSON型に保存された任意の要素が、通常のテーブルに保存&インデックスされたコラムと同じ速度で検索できます。JSONデータ検索もPostgreSQLで決まり!です。

RDBはタグ検索が苦手と言っても木構造よりマシです。PostgreSQLの配列を利用すると木構造も割と簡単かつ解りやすく表現する事ができます。こちらも検索しても適切と思われるページが出てこないですね。解説は省略しますが、配列を使うと簡単に木構造も処理できます。

OSSでPostgreSQLのORDB機能をフル活用するライブラリ/フレームワークは見たことがありませんが、PostgreSQLはRDBではなくORDBです。クラス継承(テーブル継承)をサポートするオブジェクト指向型データベースとしても利用できます。ORDB機能を利用すると、継承関係を持つアプリのオブジェクトをPostgreSQLの継承テーブルを利用して素直にマップできます。

Webアプリを作る場合、PostgreSQLを使うと楽に作れる事があります。PostgreSQLを使ったことがない方、使うと様々な問題が簡単に解決できるかも知れません!

引用元: タグ検索するならPostgreSQLで決まり! | yohgaki’s blog.

Mellanox が Messaging Accelerator(VMA) をオープンソース化 – 教育は参考資料

このソフトは socket/sendmsg/recvmsg などのシステム関数呼び出しをフックして InfiniBand の通信に置き換えるのだが、実際にソースを見ていると IP 通信が InfiniBand の UD(Unreliable Datagram) に置き換わっている。

イーサーネットを InfiniBand に置き換えて低遅延化できるのはいくつか理由がある。

物理層・ネットワーク層がイーサネットよりも InfiniBnad の方が簡素になっている。

InfiniBand のプロトコル処理がイーサーネットよりも軽い。

InfiniBand のソフトスタックは(初期化やエラー処理を除く)運用中の通信でカーネルランドへの遷移が不要になっている。InfiniBand HCA & ドライバがユーザランドプロセスに mmap した領域へデータを配置すると自動的に送受信が始まるでの、sendmsg/recvmsg や poll/select などカーネルに戻る処理がない。よって軽い。

そのため VMA のようなオーバーヘッドがあっても高速になるようだ。とはいえプログラムが書き換えられるなら SDP(Sockets Direct Protocol) などに書き換えるほうが高速であろう。

引用元: Mellanox が Messaging Accelerator(VMA) をオープンソース化 – 教育は参考資料.

収穫加速の法則 – Wikipedia

収穫加速の法則と技術的特異点の到来

カーツワイルの唱えた収穫加速の法則は、技術革新のスピードに関する法則性だけを射程に入れたものではなく、広義の有用な情報量と定義される秩序とカオスと時間の関係の一般法則の下位法則として位置づけられている。これはエントロピー増大の法則を考慮にいれたもので、宇宙の秩序増大に関する法則性を射程に入れたものである。カーツワイルの定義によれば、収穫加速の法則は

“ 秩序が指数関数的に成長(英語版)すると、時間は指数関数的に速くなる — つまり、新たに大きな出来事が起きるまでの時間間隔は、時間の経過とともに短くなる。 ”

というものである。

また収穫加速の法則は、生命進化のプロセスにも適用されており、DNAの成立、生殖という発明、発明を作る発明としての人間の誕生などを一元的に捉え、ムーアの法則によって示されたような秩序を増大させる技術革新はトランジスタ製造技術の枠を超えて継続するという主張を展開した。

PPTMooresLawai.jpg

このプロセスの継続により、人間の脳の能力を数値化した際に、早ければ2020年代前半、遅くとも2045年ぐらいにその数値をコンピュータの能力が追い越すことから、カーツワイルは「シンギュラリティ(技術的特異点)は近い」と結論付けた。

引用元: 収穫加速の法則 – Wikipedia.