暗号化技術 ざっくりまとめ
目次
昨今の科学技術の発達により、暗号化技術は進化を遂げてきた。
ここでは、昔使用されていた単純な暗号化アルゴリズムのことを古典的な暗号と表現する。
現代の暗号化技術はネットワークのセキュリティに応用されているが、
暗号化方式には、共通鍵暗号化方式と公開鍵暗号化方式に分けることができる。
また、一般的には暗号化される前のデータを「平文」(ひらぶん)と呼ぶ。
古典的な暗号
古典的な暗号には、シーザー暗号やバーナム暗号が存在する。
- シーザー暗号
送信したいメッセージに対して、アルファベットをx文字のみずらしてメッセージを送信する暗号化技術。
例えば、「book」というメッセージに対して、3文字ずつずらしたシーザー暗号を作ると「errn」という暗号文が出来上がる。
- バーナム暗号
ビット列に変換した平文と、ビット列に変換した乱数を足し合わせて暗号文を作ること。
(ビット列に変換とは、2進数表記に変換すること)
例えば、「set」という平文を、下記のように暗号化すると暗号文が完成する。
元の平文 | ASCIIコードで符号化した平文 | 平文をビット列に変換 | + | 暗号化鍵(乱数) | = | 暗号文 |
---|---|---|---|---|---|---|
s | 73 | 01110011 | + | 11100111 (E7) | = | 10010100 (94) |
e | 65 | 01100101 | + | 01001111 (4F) | = | 00101010 (2A) |
t | 74 | 01110100 | + | 10110110 (B6) | = | 11000010 (C2) |
この手法は毎回乱数が変わっていくので理論的には解読不可となる。
要するに、Brute Force Attack(総当たり攻撃)でも暗号化鍵が見つからないほど強固な方法である。
しかし、問題点として、
- 1 . 暗号化鍵配送の問題:2者間で乱数を共有しておく必要があるので、秘密裏に暗号化鍵(乱数)を届ける必要がある。
- 2 . 暗号化鍵を再利用できない:暗号文を復号するヒントを与えてしまう。
- 3 . 乱数列作成の困難性:コンピュータで乱数を作成すると、一定の規則性が生まれたり一定間隔で同じ値が生成されてしまう。
そこで、現代の暗号化技術に繋がってくる。
共通鍵暗号化方式
秘密を共有したい2者間で同じ鍵を使う方式。
鍵は他者に漏れないようにする。
共通鍵暗号化技術は、ブロック暗号化方式とストリーム暗号化方式に別れる。
- ブロック暗号化方式
データ攪拌部と鍵生成部とから構成され、暗号化をブロック単位で行う。 DESやAESのような方式がある。
- ストリーム暗号化方式
擬似乱数生成器が生成する乱数を使い、入力された平文をビット単位で暗号化する。
RC4のような方式がある。
公開鍵暗号化方式
暗号化する鍵(公開鍵)と復号する鍵とが異なる暗号化方式。
暗号化する鍵は、不特定多数の人に配る。復号する鍵は誰にも知られてはならない。
暗号化する鍵を用いて特定の文字列を暗号化し、復号する鍵(秘密鍵)を用いて暗号化された文字列を復号する。
例えば、メッセージの送信者をA、メッセージの受信者をBとすると、Aは公開されている暗号化する鍵(公開鍵)を用いてメッセージ(平文)を暗号化する。
Aは暗号化されたメッセージをBに送信する。Bは秘密鍵を用いて暗号化された文字列を復号する。
主な暗号化方式
共通鍵暗号化方式 | 概要 |
---|---|
DES(Data Encryption Standard) | 64ビット(8ビットはパリティービット(区切りのためのビット)のため、有効鍵長は56ビット)のブロック単位で平文を暗号化する。その組み合わせは、2の56乗(約7.2京)であるが、1999年に22時間で破られたり、線形解読法などの理論も登場してきたことから、安全性が問題視されて利用を避けることになっている。 |
3DES(triple-DES) | DESを3回(暗号化→復号→暗号化)を行うことで暗号強度を高めた暗号化方式。3-key方式と、2-key(1回目と3回目の暗号鍵は同じ)がある。 |
AES(Adverse Encryption Standard) | 128ビット長のブロック暗号化方式。鍵長は128、192、256ビットの3種類ある。2013年時点では安全とされており、利用が推奨されいている。 |
RC4 | 鍵長が可変(40〜256ビット)の方式。Web通信の暗号化のためのSSL/TLS、無線LANのWEPで使用されている。3DESに比べて高速に計算可能だが、AESと比較すると同程度の処理速度であるため、優位性は低下している。 |
公開鍵鍵暗号化方式 | 概要 |
---|---|
RSA暗号 | 巨大な素数の素因数分解が困難なこと(暗号鍵に不可逆性がある)を安全性の根拠とした暗号化アルゴリズム。その安全性はDESのおよそ100倍の処理速度を要すると言われている。逆の仕組みを応用してデジタル署名技術にも応用されている。 |
楕円曲線暗号(ECC) | 楕円曲線上の離散対数問題の困難さを安全性の根拠としたもの。ECDSA(Elliptic Curve Digital Signiture Algolithm)と呼ばれるデジタル署名用アルゴリズムに応用されている。RSAと比較してデジタル署名の処理速度が早いことが特徴。 |
ハイブリッド暗号
RSA暗号は鍵長が長いと処理速度が遅くなるというデメリットがある。
要するに、送信したいメッセージが長ければ長いほど処理速度が低下するという問題が発生する。
そこで、AESなどの共通鍵暗号方式との組み合わせを行うことで、早い処理速度を維持したまま安全性の高い通信を行うことができる。
具体的には、共通鍵暗号の共通鍵にあたる部分のみをRSAで暗号化を行い、通信したい相手に対して共通鍵を安全に送信することが可能。
互いのメリットを活かし、デメリットを相殺するような仕組みが取られている。
最後に、様々な暗号化手法が確立されているが、安全性を検証したものでないと実用的に使用することはできない。
(自分で勝手に作った暗号は検証さレていないので、セキュリティの観点上リスクがある。)
【参照】