2012年8月21日火曜日

ひよこ党結党宣言

先日の「出馬してみた」の精神に基づき、本日2012年8月21日、新党「ひよこ党」を結党します。とりあえず私一人しかいない政党で、今後もなんの活動予定もありませんが、結党宣言を書いたので、ここに載せます。

とりあえずfacebookページを作ったので「いいね」してくれると喜びます。

githubにレポジトリを作ったので、誤字脱字などありましたら、pull requestを送ってください。

みんなも新党旗揚げするといいんじゃないかな?


ひよこ党綱領

2012年8月21日、「出馬してみた」の精神に則り、ここにひよこ党を設立する。

ひよこ党は、自由、博愛、理性の原則に拠り、日本を多様かつ寛容で国際的な自由主義・自由経済・民主主義のリーダーとするべく、現実的で理性的な政策を提唱・実行していく。

ここに本党の三大価値観と行動規範を明記し、今後の活動の礎としたい。

* 三大原則

** 自由

自由ということは、21世紀に社会が繁栄するために最も大切なことであると信じます。

21世紀の社会では、価値はイノベーション(改革)からしか産まれません。イノベーションを生み出すのは自由な社会です。規制でがんじがらめの社会からはイノベーションは産まれません。

自由な経済、自由な文化活動、自由な市民生活、自由な政治活動を保証することが国家の果たすべき最も大切なつとめであると強く信じます。

極端に安全性を重視するのをやめ、規制を減らすことにより、日本経済は発展し、より住みやすい国になるでしょう。


では、自由主義とは政策の検討過程においてどのような働きをするのでしょうか? 実例に則して見てみましょう。

私はタバコの煙が苦手で、喫煙できる店などにいると、すぐに健康を害します。個人的には、公共の場所はすべて禁煙であるべきだと思います。しかし、それを法律によって強制するべきではないと信じます。なぜなら、法で絶対的に禁止せずとも、間接的に禁煙の場所を増やす政策をとることができるからです。

例えば、喫煙できる店を免許制にして、その免許に対して税を課すとか、優れた排煙装置を義務づけるなどすれば、必然性もないのに喫煙可能にしている店は減ることになるでしょう。

かといって我々は自由放任主義(レッセフェール)にも与しません。なぜなら市場は失敗するからです。

日本にはスターバックスができるまで禁煙の喫茶店というものは皆無でした。スターバックスはあっという間に日本で大人気になりましたが、それまで「禁煙の店に行きたい!」という非喫煙者のニーズは完全に市場から無視されていたのです。市場が必ずしも良い働きをするとは限りません。もし欧米で反喫煙の動きが無ければ、そうした市場は永遠に開拓されなかったかもしれません。

またタバコのように依存性がある事柄は、自由放任主義に馴染みません。なぜなら人間はそうしたものに対して必ずしも合理的な判断を下せるとは限らないからです。タバコなどの麻薬類や賭博などに関しては規制が正当化されると思います。

しかしながらタバコやアルコールの全面禁止という政策がうまく行くはずはありません。そうすれば禁止をかいくぐる人がでるでしょうし、自分に害を与える行為であっても完全に禁止するのは行き過ぎたパターナリズム(父権主義)であると考えます。重い課税などによって対処をしていくのが穏当であると考えます。

** 博愛

自由な経済や自由な社会を作るということは、社会のあちこちで競争が生じるということです。経済や労働の面だけではなく、恋愛や結婚、学習や文化活動などあらゆる点において競争が生じます。

競争それ自体は素晴らしいことですが、競争に負けた人を救う仕組みが必要です。

全ての国民がなんとか衣食住を得て、教育を受け、基本的な医療を受け、子供を養っていける最低限の社会保障は守らねばなりません。人々が生まれによって可能性が閉ざされることが無いように最大限の配慮をするべきです。

また、社会が競争のメリットを得るためには、不正な競争、不公正な社会慣行や不公正な取引から人々を守る必要があります。年齢や性別によって雇用差別が行われたり、国籍や人種によって住宅が借りられなかったりするような問題に対しては厳正な対処が必要です。

日本人は高い勤勉さや道徳心を持ち、世界中で高く評価されています。しかし日本は自殺率も高く、幸福度もGDPから見て十分に高いとは言えません。それには、寛容さや多様性の低さが理由の一つではないかと考えます。

人を単一の尺度で測り、上下関係や社会慣行によって縛ることが、人々の社会適応を難しくしており、それが不幸、不効率をもたらしている可能性があります。

強固な上下関係にもとづく長期間労働は国民の不幸や精神状態の悪化をもたらしているでしょうし、上下関係にもとづく自由な発想や闊達な議論の阻害は、経済的不効率をもたらすでしょう。

また寛容性の無い社会では、国際化やイノベーションの恩恵を受けにくくなります。多様性と寛容さを持った社会作りをしていくことが望まれます。

** 理性

いまの政治を悪くしている最大の原因は、政治においては人々が理性的に行動しないからです。

多くの人は、具体的なテーマであり、かつ自分の仕事などの経験も知識もあり真剣に取り組んでいることであれば、理性的に考えれば、それなりに良い答えを見つけることができます。

ビジネスのような分野では、多くの人が切磋琢磨して、結果的に競争によって、良い事業だけが残ります。そのために我々はすぐれた製品やサービスを享受することができます。

しかし政治においては、主権者である国民は政治について詳しい情報も持っておらず、真剣に取り組んでいるわけでもありません。さらに意思判断を行うべき対象は、多数の人の価値観や利害が絡み合う難しい事柄ばかりです。

そして新聞やテレビなどのメディアは速報性を重視しますので、物事のもつ多面性や複雑さを無視する傾向にあります。

そのためどうしても感覚的、感情的な意思判断を行うことになり、選挙や世論は必ずしも良い決定をもたらしません。

私たちは、社会科学と自然科学の知見を活用し、情報公開と透明性を旨として、感情にながされない論理的で冷静な政治を行います。とくに経済的合理性を大切にして政策を行います。

* 行動規範

** 保守主義の原則

「ものごとがそうなっているのは、そうなったからだ」(コンサルタントの秘密、G・M・ワインバーグ著、63ページより)という原理を尊重します。

すなわち、今の社会の在り方というものは、これまでの人々の在り方や努力の結果としてここにあるものです。そこに良くない点があったとしても、それはそれなりの経緯をへてそのようになっているということです。

むやみに今の社会の在り方を否定して、闇雲に改革に走るべきではありません。

なぜ今の社会がこうであるのかを真摯に見つめて、安全に少しずつ変革を行い、それによって損失を被る人を尊重しながら進めていきます。

小さな変革であってもリスクが少なくメリットの大きいものを、大げさな改革より優先します。

どうせ抵抗する人がいる以上、そんなにすぐに変化を起こすことなんかできっこないのですから。他人のやり方を強制的に変えさせることはできないし、他人にやりたくないことをさせることもできないのです。(コンサルタントの秘密、G・M・ワインバーグ著、166~170ページ)

私たちは理想よりも現実と実利をつねに大切にします。

** 党派主義からの脱却

理想よりも現実を大切にすべきだといっても、票を取るために嘘をついたり、世論におもねって間違った政策を実行したり、意味も無く他の政党を攻撃したりすることは、国民を裏切る行為です。

私たちは、得票数や支持者を増やすことにこだわりません。

私たちの目標は議席を取ることではなく、日本や世界をより良い場所に変えることです。

誰が言ったことであれ、良いことには賛成するし、悪いことには反対します。

** 情報公開の原則

今の日本の問題点の一つは、政府による分かりやすい説明がないことです。現状の情報公開の体制・手法は、分かりにくく、問題の全貌を理解するに足るものではありません。

私たちは可能な限り、全ての情報をわかりやすく公開します。とくに「何が問題なのか」「なぜこのように考えるのか」「どういう手が考えられるのか」などを重視して公開します。

世の中の問題について、マスメディアよりも深く多面的に掘り下げた分析を公開します。

例えば、福岡空港のアップグレード検討プロジェクトなどは良い情報公開を行っていたと考えます。「なぜアップグレードが必要なのか」「どのような手法が考えられるか」などといったことを分かりやすく公開し、現空港の増設案が決定されました。


2012年8月14日火曜日

PBKDF2によるパスワード暗号化の手順

会員制ウェブサイトのように、ユーザからのパスワードを保存するシステムでは、必ずパスワードを暗号化して復元できないようにして保存しなければなりません。なぜなら、もし情報漏洩が起こったときにユーザのパスワードが漏洩してしまったら、他のウェブサイトなどへも侵入され、致命的な結果につながりえるからです。

もしあなたが技術者でなくても、技術者や外注先にたいしてパスワードの暗号化保存を要件に入れるべきです。そのときはこの記事をお見せください。

(もちろん全てのウェブサイトで使うパスワードを変えるのが望ましいでしょうし、もし可能ならパスワードに頼らないハードウェアトークンによる認証などの強力な仕組みを採用するのが良いのでしょうが、現状では皆がそこまでできていないのが現実かと思います。)

これまでですと、パスワード保存にはSHA1やMD5のハッシュ関数の適用などによって暗号化していることが多かったかと思います。しかし、いまどきではSHA1関数などは一瞬で計算が終わってしまいますので、総当たり攻撃をされると弱いという問題があります。

それを多少なりとも改善するのがPBKDF2によるパスワード暗号化手法です。

PBKDF2はパスワードから暗号鍵を導出するための関数ですが、SHAなどのハッシュ関数(HMAC)を繰り返し何千回もかけることにより、総当たり攻撃に時間がかかるようにしています。

PBKDF2はOpenSSL 1.0.0以降から実装されましたので、簡単に利用することができます。以下はRuby 1.8.7でのコードですが、他の言語でもOpenSSLを使えば簡単に利用できるかと思います。[1]

require 'openssl'
key = "hogehogehogehoge" # 秘密の文字列
user.salt = OpenSSL::Random.random_bytes(16).unpack('h*')[0]
user.iteration = 10000
user.hashed_password = OpenSSL::PKCS5.pbkdf2_hmac(password,user.salt+key,user.iteration,16,"sha256").unpack("h*")[0]
user.save

この10000という数字が繰り返し回数ですので、これを増やすことによって安全性を高めることができます。この数をユーザーごとにデータベースに保存しておけば、途中で繰り返し回数を高めて安全性を強化することもできますね。

saltというのは、ユーザーごとにランダムの文字列をパスワードに加えることで、ユーザーごとに暗号化結果が異なるようにし、総当たりをやりにくくするとともに、推測をしにくくします。これはデータベースに保存しておかないと認証できなくなってしまいます。

keyというのは、saltに秘密情報を付加しておくことで、データベースだけが流出した場合に、鍵を総当たりしにくくするための付加鍵です。これは私の思いつきなので、意味があるかどうかよく分かりません。

PBKDF2は、他にもAESなどの暗号鍵をパスワードから導出したりすることにも利用することができます。[2]

弱点としては、こうした計算量に依存するものは、クラウドやハードウェアの力によってかなりのスピードで破ることができてしまうことがあります。[2]

計算速度が命なので、同じような関数をRubyやJavaやPHPなどで独自実装することは避けるべきだと思います。Cで記述されたOpenSSLのような高速な実装を使わないと、すぐに破られてしまうでしょう。

また、PBKDF2関数を単に2回適用することで繰り返し回数を単純に増やすのと同じ結果を得ることはできないようですので、既存のパスワードを定期的に強化していくのは難しいのかなあと思いました。(このへん方法があれば知りたいです)

パスワードに依存しない認証方式がもっと普及すればいいんでしょうが、一向に普及する兆しもないですね。OpenIDといっても、結局は他の同種のサイトに依存してるだけですし。

参考:
  1. パスワードのハッシュに使うべきPBKDF2、Bcrypt、HMACの各言語実装一覧 - Dマイナー志向
  2. PBKDF2 - Wikipedia, the free encyclopedia