技術部長が知りたい事は、実は〇〇だった。

できる部下に囲まれながら、なんとか生きていく。そんな中間管理職の方々の仕事のヒントになれば。

なぜ、「ハッシュ」「ソルト」「ストレッチング」が必要なのか?

ハッシュ、ソルト、ストレッチングってなーに?

 

 

え?そんなことも知らないんですか?

 

 

そう言わずに、教えてよぉ

 

 

分かりました。
ではまず、ユーザーのパスワードは、
DBにどうやって保管してますか?

 

 

そりゃもちろん、暗号化して保管してるよ~

 

 

あちゃ~。部長、それマジで言ってますか?

 

 

え?ダメなの?暗号化って完璧じゃないの?

 

 

暗号化は、カギが漏れれば復号できちゃうので、
残念ながら完璧じゃないです。

 

 

そうすると、どうしたらいいの?

 

 

暗号化後の文字列を更にハッシュ化して、不可逆にしちゃって、
最悪の場合漏えいしても、復号できないようにするといいです。

 

 

 

お、出てきた。ハッシュ化って?

 

 

 

とある文字列を、とある計算式に放り込むと、
不規則な文字列を生成できる仕組みのことです。
この文字列は、もとの文字列に戻すことはできません。

 

 

 

ん?じゃー、パスワードの比較ができなんじゃ?

 

 

入力されたパスワードと
DBに保管されているパスワードは比較しません。
というか不可逆なのでできません。
入力されたパスワードもハッシュ化して
そのハッシュ化された文字列同士を比較します。

 

 

おー、なるほどねぇ。
そうすると、元のパスワードは保持していないから漏えいしても大丈夫だけど、
パスワードで認証ができるんだね。

 

 

さらにここでソルトストレッチングもやっちゃいます。

 

 

おっ、急に出てきた。ソルトやストレッチングってなーに?

 

 

ソルトは、その名の通り「塩」なイメージですw
ハッシュ化する前の文字列に、ランダムに生成した文字列をくっつけてから、ハッシュ化します。

「パスワード」+「ソルト文字列」→ハッシュ化

ハッシュ化も完全では無いので、元の文字列が長ければ、それだけでも攻撃耐性があがるので有効です。
さらに、この付与するソルトは、ユーザ毎に異なる文字列にします。
そうると、たまたま同じパスワードを使っている人同士でも、DB上のハッシュ値が異なり、より安全です。

 

 

ほぉ~。凄いこと考える人がいるもんだねぇ。そしてストレッチングとは?

 

 

最初の方で、ハッシュ化の話をしたと思いますが、このハッシュ化を繰り返し行うことで、より強固なハッシュ値にするのがストレッチングです。


「パスワード」+「ソルト文字列」→ハッシュ化
→ハッシュ化→ハッシュ化・・・

これを数千回から数万回繰り返します。

 

 

数千から数万か。すごいな。

 

 

コンピュータは人間と違って、繰り返し同じことするの得意ですからw

 

 

ほぉ。なるほどねぇ。

君は「UUID」を知っているか?

UUIDってなーに?

 

 

え?そんなことも知らないんですか?

 

 

そう言わずに、教えてよぉ

 

 

 

UUID(Universally Unique Identifer)

RFC4122で定義されている

生成の度に値が変わり、理論上重複することがない

実装的にはGUID(Global Unique Identifer)が有名 

その他似たような名称のIDたち。 

UDID(Unique Device Identier)

iOS端末の製造時に割り当てられる固有の識別コード

値の変更は不可

端末IDや端末固有IDと同じ

iOS5から、プログラムからの取得が非推奨になった

UIID(Unique Installation Identifer)

インストールごとに変わるという性質を持ったUUID

そのため、アプリを複数回インストールすると、都度別の値になる

アプリの初回起動時にUUIDを生成するのが一般的?

「5G」を理解するための、過去と未来

5Gってなーに?
すぐに機種編しないといけないの?

 

 

え?そんなことも知らないんですか?

 

 

そう言わずに、教えてよぉ

 

 

 

まずは今までをおさらい

  1G 2G 3G 3.5G

3.9G

(4G)

通話 データ
DOCOMO アナログ電波 mova Foma - Xi
au アナログ電波 - 3G - LTE
Softbank アナログ電波 - 3G - LTE
UQ-Wimax × × × × WiMax ×

LTE・・・Long Term Evolution

movaとか、Fomaって、懐かしい。

あ、WiMaxって、XiやLTEと同じなんだね。

そして俺のiPhoneは、じゃー3.9Gなのかねぇ。

(最近は、3.9Gのことを4Gと呼んでもよくなりました)

 

そしてIoTブームがやってきた

昨今のIoTブームで、身の回りのありとあらゆるものがインターネットにつながって通信を行うようになってきて、自動運転のリアルタイム通信とか、異常検知のセンサーとか、速度も今まで以上に求められるようになってきた。

それから4Kやら8Kやら、データ通信量もいままでとは比較にならないほど大きくなってきた。

そこで次世代規格として登場したのが「5G」

 

いますぐ機種変しないとだめ?

いえいえ。今の3.9G(4G)がすぐ使えなくなるわけではないですし、5Gという呼称は、今から決まっていく次世代規格の総称なので、まだまだ静観してて大丈夫です。

2020東京オリンピックのころに、ちらほら対応機種が出始めているとは思いますが、5Gじゃないと享受できないサービスを日常に取り入れるのは、まだまだ数年先のこと思います。