なぜ、「ハッシュ」「ソルト」「ストレッチング」が必要なのか?
ではまず、ユーザーのパスワードは、
DBにどうやって保管してますか?
残念ながら完璧じゃないです。
最悪の場合漏えいしても、復号できないようにするといいです。
不規則な文字列を生成できる仕組みのことです。
この文字列は、もとの文字列に戻すことはできません。
DBに保管されているパスワードは比較しません。
というか不可逆なのでできません。
入力されたパスワードもハッシュ化して
そのハッシュ化された文字列同士を比較します。
そうすると、元のパスワードは保持していないから漏えいしても大丈夫だけど、
パスワードで認証ができるんだね。
ハッシュ化する前の文字列に、ランダムに生成した文字列をくっつけてから、ハッシュ化します。
「パスワード」+「ソルト文字列」→ハッシュ化
ハッシュ化も完全では無いので、元の文字列が長ければ、それだけでも攻撃耐性があがるので有効です。
さらに、この付与するソルトは、ユーザ毎に異なる文字列にします。
そうると、たまたま同じパスワードを使っている人同士でも、DB上のハッシュ値が異なり、より安全です。
「パスワード」+「ソルト文字列」→ハッシュ化
→ハッシュ化→ハッシュ化・・・
これを数千回から数万回繰り返します。
君は「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」を理解するための、過去と未来
すぐに機種編しないといけないの?
まずは今までをおさらい
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
そして俺のiPhoneは、じゃー3.9Gなのかねぇ。
(最近は、3.9Gのことを4Gと呼んでもよくなりました)
そしてIoTブームがやってきた
昨今のIoTブームで、身の回りのありとあらゆるものがインターネットにつながって通信を行うようになってきて、自動運転のリアルタイム通信とか、異常検知のセンサーとか、速度も今まで以上に求められるようになってきた。
それから4Kやら8Kやら、データ通信量もいままでとは比較にならないほど大きくなってきた。
そこで次世代規格として登場したのが「5G」
いますぐ機種変しないとだめ?
いえいえ。今の3.9G(4G)がすぐ使えなくなるわけではないですし、5Gという呼称は、今から決まっていく次世代規格の総称なので、まだまだ静観してて大丈夫です。
2020東京オリンピックのころに、ちらほら対応機種が出始めているとは思いますが、5Gじゃないと享受できないサービスを日常に取り入れるのは、まだまだ数年先のこと思います。