暗号化とは何か？総合ガイド


# 暗号化の簡単な歴史

暗号化は、私たちのオンラインデータセキュリティの最前線の防御です。私たちがウェブを閲覧したり、個人的なメールを送信したり、機密情報を共有したりする際に、暗号化によってデータが不正な第三者によって読まれないようにします。しかし、これは常にそうであったわけではありません。政府による特殊な暗号プログラムとして始まったものが、今では公共インターネットの不可欠な部分となっています。

この記事では、データ暗号化の仕組み、その歴史、現在使用されているさまざまなタイプの暗号化について説明します。現代の暗号化プロトコルは、ブラウザとウェブサービス間、またはVirtual Private Network (VPN)によって提供されるものなど、非常に安全で、破ることがほぼ不可能です。しかし、オンラインプライバシーに関しては、事態はさらに複雑です。

![Screenshot 2024-08-14 at 21.32.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/97d39ebd-60be-51a5-31f1-05e134aed06d.png)


AIによるデータ追跡や監視プログラムの台頭により、暗号化だけではプライバシーを保護するには不十分です。VPNはプライバシー保護のための追加ツールです。しかし、従来の集中型VPNは、データ漏洩、メタデータ追跡、トラフィック分析に対して脆弱です。このような継続的なプライバシーの脅威を考えると、最適なVPNプロバイダーを慎重に選ぶ必要があります。信頼性のある分散型VPN（dVPN）サービスは、暗号化を二重にし、IPアドレスを隠すだけでなく、メタデータの追跡を阻止します。

## 古代の暗号技術の起源
ウェブ上での一般公開向けの暗号化は比較的新しく、現在では比較的普通のことです。当初、データ暗号化は国家の安全対策としてのみ使用されていました：国家または軍事機密を守り、敵（実際または潜在的な）からのアクセスを防ぐためです。1990年代にインターネットが一般に利用されるようになると、暗号化に関する言語とアクセス可能性が変わりました。「セキュリティ」や「プライバシー」という用語が一般に拡張されるようになりました。しかし、この情報を隠す必要性は実際には非常に古いものです。

メッセージを隠し、さらに暗号化によって変換するという実践は、古代文明にまで遡ります。ヘロドトスは、ペルシャ人に対する反乱を引き起こそうとしていたヒスタエウス将軍が、奴隷の剃った頭皮に秘密のメッセージをタトゥーで彫り、指揮官にそれを運ばせたという話を伝えています。奴隷の髪が再び伸びると、メッセージは隠されて安全に運ばれました。技術的には、これは暗号化ではなく「ステガノグラフィー（steganography）」と呼ばれます：メッセージが隠されているだけで変換されていません。

紀元前700～500年には、軍事通信を将軍に伝えるためや競争相手から貿易秘密を保護するために、暗号が開発されました。古典的な暗号技術の一つは単純な文字置換であり、例えば、各文字がアルファベットの対応する文字（A=Z、B=Yなど）に置き換えられるものです。暗号は翻訳のためのコードまたはルールにすぎません。時が経つにつれて、これらの方法はますます複雑になりました。多くの可能なローター構成に基づく洗練された文字置換タイプの機械は、数世紀後にナチスドイツによって軍事メッセージの暗号化に使用されました。これらの「エニグマ」マシンの解読は、連合国が戦争に勝つために重要な役割を果たしました。

したがって、暗号化は人間の言語が政治的になった瞬間と同じくらい古く、言語がデジタル化し続ける限り新しいと言えます。

## 現代のセキュリティ技術としての暗号化
現代のデジタルおよび計算機暗号技術は1970年代に開発され、主に米国政府の研究資金とイニシアチブによって進められました。RSA（Rivest-Shamir-Adleman）はその成果の一つです。これらの努力は完全に秘密にされていたわけではありません。なぜなら、学術研究者やIBMのような技術企業が政府の契約の下で働いていたからです。しかし、その成果は厳重に守られ、国家安全保障の資産と見なされていました。暗号技術は冷戦時代の米国法の下で「軍需品」または武器として分類され、その輸出を制限し、違反を処罰するために使用されました。

## 公共のプライバシー資源としての暗号化
一連の裁判、公的な活動、草の根技術開発を通じて、この法的分類は緩和され、暗号化メッセージングシステムは国際的に広がり始めました。デジタルプライバシーの概念が全員に対して生まれました。

2010年代までに、ほとんどのウェブサービスは少なくともAES（Advanced Encryption Standard）または同様のプロトコルを提供し、クライアントのエンドツーエンドの暗号化を確保するようになりました。ですから、今日、あなたがウェブを閲覧したり、メールを送ったり、オンラインで何かを購入したりするとき、あなたのデータはデフォルトで暗号化されている可能性があります。

残念ながら、オンラインプライバシーの物語はこれで終わりではありません。いわゆる暗号戦争の期間中、政府はオンライン暗号化が公共にアクセス可能で広範に普及することを阻止しようとしました。バックドアなしでの暗号化された通信システムへのアクセスは、世界的に継続的な政治的闘争となっています。しかし、その前に、暗号化がどのように機能するのかを基礎から見てみましょう。


## 暗号化とは
暗号化とは、データを変換して暗号化キーを持つ者以外には読めないようにする技術です。例えば、機密情報を特別なキーを持つ者だけがアクセスできる防護室に入れることを想像してみてください。暗号化とは、このようにデータを封印し、保護し、秘密にすることを意味します。ただし、物理的な保護室ではなく、データはデジタルコードに変換されます。

## 暗号化プロセス
暗号化のプロセスでは、データを「クリアテキスト（cleartext）」（元の読み取り可能な形式）から「暗号文（ciphertext）」（暗号化された読み取り不可能な形式）に変換します。特別なアルゴリズムがデータの各文字や値を変換し、たとえ誰かがそれを傍受したとしても、解読が不可能になります。現代の暗号化アルゴリズムには、AES、RSA、ECC（楕円曲線暗号）などが含まれます。

## 暗号化キーの強度
暗号化の強度は、暗号化キーのビット数に依存します。キーが長ければ長いほど、解読が難しくなります。2001年には、AESが機密および一般利用のための128ビット暗号化標準として確立され、256ビットキーとも互換性があります。AES暗号化は、元の56ビットDES（データ暗号化標準）を実質的に廃止しました。

高度なセキュリティを確保するためには、現在の基準では256ビット暗号化が推奨され、非常にセンシティブな使用ケースではさらに高いビット数が使用されることがあります。256ビット暗号化の強度を理解するには、約10^77の可能な数値の組み合わせがあることを考慮してください。比較として、既知の宇宙に存在する推定原子数は約10^88個です。

## 基本的な暗号化の種類
暗号化の主な形式は、キーがどのように共有されるかによって分類されます。現在の実践では、以下の形式が組み合わさり、ハイブリッド暗号化プロトコルが形成されます。

### 対称暗号（Symmetric encryption）
対称暗号は、データを暗号化および復号するために同じ共有キーを使用します。送信者と受信者が同じキーを持っているか、事前に共有している必要があります。AESは主要な対称暗号化標準であり、データを128ビットの固定サイズのブロックに暗号化します。

対称暗号は効率的で、静止データの大量保護に役立ちます。しかし、複数の当事者間で安全にキーを共有する必要があるため、これがセキュリティリスクとなる可能性があります。そこで、非対称暗号が役立ちます。

### 非対称暗号（Asymmetric encryption）
非対称暗号（公開鍵暗号とも呼ばれる）は、暗号化のための公開鍵と復号のための秘密鍵という2つの異なるキーを使用します。これらのキーは大きな素数に基づいており、一方のキーで暗号化された情報は他方のキーでのみ復号できます。公開鍵は広く共有しても安全ですが、秘密鍵は厳重に保護する必要があります。RSAは1983年に公開鍵暗号を導入し、多くのオンライン暗号化プロトコルの基礎となっています。

### 楕円曲線暗号（ECC、Elliptic Curve Cryptography）
ECCは、有限体上の楕円曲線の代数構造に基づいた新しい非対称公開鍵暗号の形式です。ECCは、暗号化と復号の計算コストを最小化しながら暗号強度を最大化するため、非常に効率的です。例えば、256ビットのECCキーはRSAの3072ビットキーに相当します。そのため、ECCはSSL/TLS証明書、ブロックチェーン取引、WireGuardなどの暗号プロトコル、さらにはモバイルデバイスのソフトウェアにますます使用されています。

## 新しい暗号化形式
現在、WireGuardなどの高度なVPNルーティングプロトコルで使用されている新しい暗号化アルゴリズムもあります。例えば、ChaCha20は非常に安全で高速であり、特定のサイバー攻撃に対して耐性のあるストリーム暗号です。ChaCha20はPoly1305とペアになってメッセージ認証を行うことが多く、ChaCha20-Poly1305と呼ばれることがよくあります。

### オンライントラフィックのためのハイブリッド暗号

暗号化は、データを保護するためにハイブリッドや多層形式を取ることもできます。対称暗号は高速ですが、それだけではキーを安全に共有する暗号化された方法を提供しません。公開鍵暗号がこれに対する解決策を提供します。ハイブリッドモデル（ECCを含む）は、対称および非対称暗号プロトコルを異なるレベルで組み合わせて、キーのセキュリティと暗号化の最適化の両方を提供します。

### インターネットセキュリティプロトコル

最も広く普及しているハイブリッド暗号形式は、現在ウェブ全体のトラフィックを保護するプロトコルです：元のSSL（Secure Socket Layer）、SSLを構築し改善したTLS（Transport Layer Security）、そしてTLS/SSLの上にレイヤー化されたHTTPSです。

ブラウザを介して任意のウェブサービスに接続するとき、SSL/TLSは暗号化された接続を確立するためのプロセスです。これは、ブラウザとウェブサービス間の「ハンドシェイク」で始まり、信頼された証明機関（CA）を通じて公開鍵などのTLS/SSL証明書の有効性を認証(authenticating)し、それが本物のサーバーであり偽者ではないことを確認します。その後、クライアント側とサーバー側でデータを暗号化および復号するために対称暗号鍵が安全に交換されます。これはデータ転送の前にすべて行われます。

### 多層暗号化

通常、ユーザーデータは一度だけ暗号化されます。なぜなら、それが十分に安全であり、高速だからです。しかし、データを複数回暗号化する方法もあります。VPNに接続すると、データはおそらく2回暗号化されます：最初はHTTPS接続によって、次にVPNトンネルによってです。これらの暗号化ステップは基本的に層を形成し、HTTPSはクリアテキストデータの核の周りの最初の層となります。

他のルーティング手順には、より複雑な多層設計があります。Torネットワークのオニオン暗号化は、3つのサーバー（またはノード）ルーティングネットワークを通じてパケットのルートを保護するために、複数層の暗号化を追加するハイブリッド暗号のよく知られた例です。Sphinxは、NymVPNを動かすmixnetのような匿名通信のために特別に設計された多層暗号化プロトコルです。

### 速度最適化

暗号化プロセスが強固であればあるほど、レイテンシーが問題となります。長い鍵、多段階の鍵交換、複数の暗号化層、多ノードの復号およびルーティング：これらすべてがプロセスに計算時間を追加します。しかし、それは確実にセキュリティを向上させます。

最終的に、オンラインセキュリティとプライバシーは常に速度と性能とのトレードオフを伴います。したがって、暗号化プロトコルを選択する際や、VPNのようなサービスを選ぶ際には、使用されている暗号化アルゴリズムとルーティングプロトコルを考慮することが重要です。

# 暗号化を破る技術

暗号化セキュリティを破ることは可能でしょうか？原理的には可能です。しかし、実際には、現代の暗号化標準を正面から破ることは現在不可能です。これを行うには、現在知られている計算資源では不可能な膨大な計算リソースが必要です。ただし、これらの計算力が実際に利用可能になる時期が問題です。いずれにせよ、暗号化を破る手段を分解してみましょう。

### 鍵の取得

暗号化を侵害する最も直接的な方法は、暗号化/復号鍵を取得することです。これはさまざまな方法で達成できます。

・ユーザーエラー：秘密鍵は、再利用や不適切な共有など、管理ミスによって露出することがよくあります。これはパスワードと同じです：それが知られている場合、それはあなたに対して使用される可能性があります。これを軽減するには、安全な保管と交換が必要です。

・サイバー攻撃：キーはさまざまなデータハッキング攻撃によって不正に開示されることがあります。フィッシング攻撃（phishing attacks）では、ユーザーが管理者のふりをした偽のメールを通じて機密情報を開示するようにだまされることがあります。中間者攻撃（Man-in-the-middle attacks）では、キー交換プロセスが傍受または操作される可能性があります。そしてもちろん、データベース攻撃では平文として不適切に保管されたキーが明らかにされることがあります。

・Social engineering：ソーシャルエンジニアリング攻撃にはさまざまな形態があります（例：スピアフィッシング、偽装、ベイティング）。これらは個人を心理的にターゲットにし、彼らのソフトウェアやハードウェアをターゲットにするのではありません。例えば、ITセキュリティ分析を装った詐欺メールがユーザーを欺き、システムが侵害され、暗号化鍵を共有する必要があると信じ込ませることがあります。潜在的な脅威の恐れが脅威の実現に利用されます。これらの攻撃が成功した場合でも、これらの方法は技術的には暗号化を破ったり解読したりするのではなく、人間の脆弱性を利用してキーへのアクセスを得るものです。

### ブルートフォース攻撃（Brute force attacks）

ブルートフォース攻撃（Brute force attacks）は、正しいキーが見つかるまで、すべての可能なキーの組み合わせを体系的に試すことによって、暗号化キーを推測しようとします。しかし、キーの長さが増加するにつれて、可能な組み合わせの数は指数関数的に増加し、ブルートフォース攻撃はますます非現実的になります。

理論的には可能ですが、ブルートフォース攻撃は単に必要な計算リソースが膨大なため、実際には実行不可能です。例えば、56ビット暗号化はチャレンジによって定期的に破られており、記録的な復号時間は約22時間です。それ以来、廃止されました。128ビット暗号化は、コンピュータシステムによって解読されたことはまだ知られていません。256ビット暗号化のような高度な鍵では、ブルートフォース攻撃は事実上不可能です：すべてのコンピュータが最大限に動作しても、解読にかかる時間は予測できないほど長くなります。

### 暗号解読（Cryptanalysis）

コードが現れるところでは、すぐにそれを解読しようとする試みが続きます。暗号解読（Cryptanalysis）は、古代の方法であり、言語の頻度（特定の言語で可能な限られた母音のペアリングなど）を分析することによって暗号を破ることを試みます。目標は、使用される可能性のあるコードの数を減らし、コードの頻度を分析することです。

デジタルデータの数値暗号化では、これが非常に難しくなります。それでも、現代のデータ暗号解読の方法（modern data cryptanalysis）は、暗号文の中の暗号化パターンを特定し、可能なキーの数を減らそうとします。さまざまな暗号解読技術がありますが、現時点では実際的な効果がないため、ここでそれらをすべて詳細に説明する必要はありません。

### サイドチャネル攻撃（Side-channel attacks）

サイドチャネル攻撃（Side-channel attacks）は、暗号化そのものをターゲットにするのではなく、コンピュータの電力使用量やタイミングなど、暗号化プロセスから漏れるデータを分析します。このメタデータ（metadata）は、使用されている暗号化アルゴリズムの種類とキーのパラメータをより正確に特定するために使用されます。しかし、128ビットおよび256ビットの現代の暗号化アルゴリズムは、アルゴリズムが知られていても解読がほぼ不可能です。それにもかかわらず、メタデータの収集と分析の役割は、オンラインプライバシーを保護するための暗号化の限界を理解する上で重要です。

### 量子コンピューティング（Quantum computing）

量子コンピューティングは、現在の暗号化標準を破る将来の重大なリスクをもたらします。量子コンピュータ（Quantum computers）は、一度に多くの計算を実行することができます。これらのスーパーコンピュータの理論的な力は、ブルートフォース攻撃や暗号解読で従来のコンピュータシステムを上回る可能性があります。しかし、それが現在の暗号化標準をどのように侵害するかはまだ推測の域を出ません。それにもかかわらず、この差し迫った脅威は、量子耐性暗号化（quantum-resistant cryptography）、つまりポスト量子暗号化（post-quantum encryption）の開発を促しました。これは、将来の量子解読の可能性に備えて暗号化をより強固にする努力です。

# プライバシーのための暗号化の限界

現代の暗号化方法は事実上侵入不可能であり、エンドツーエンドで暗号化されたオンライントラフィックや通信の内容が安全であるはずです。しかし、オンラインプライバシーに関しては、データ暗号化だけでは十分ではありません。

データの内容が暗号化されていても、多くのエージェントやAI搭載システムがオンラインで私たちを積極的に追跡し、メタデータ、つまり私たちが行うすべての暗号化されたトラフィックに関連するデータを収集しています。これは私たちの個人情報よりも多くを明らかにすることがあります。

### メタデータの漏洩

トラフィックの内容だけがすべてではありません：オンライントラフィックに関するメタデータは特に明白です。たとえば、暗号化されたメッセージを送信すると、そのトラフィックに関する多くの暗号化されていないデータが読み取れる状態で存在します。これには、IPアドレス、デバイスタイプ、近隣の位置、受信者のIP、アクティビティのタイムスタンプおよび期間が含まれます。

この情報は、私たちの名前、住所、銀行情報などの明示的な個人データを明らかにするわけではありません。しかし、それはインターネットサービスプロバイダまたは中央集権型VPNから漏洩または開示された記録の助けを借りて、この情報にたどり着くために使用される可能性があります。より一般的には、第三者によって積極的に収集され、分析され、私たちの行動パターンや関心、欲望について推測するために使用されています。

### トラフィック分析

長期的な追跡は、特定のウェブサービスや対応者との接続頻度や通信頻度、ブラウジング習慣、興味、欲望、政治的傾向に関する派生データを蓄積することもできます。これらすべては、私たちの背後で定期的に収集、分析、売買されている膨大な個人データのプールに相当します。したがって、特定のメッセージ、トランザクション、サイト訪問の内容が暗号化されていても、AI搭載の追跡システムは、私たちが何をしているのか、何を探しているのか、何に興味があるのかに関する膨大なデータを解読することができます。オンラインプライバシーに対する真の懸念は、暗号化では現在対応できないこれらの追跡プロセスに焦点を当てる必要があります。

# 結論

現代のデータ暗号化は、公共のウェブにとって大きな技術的進歩です。オンラインでのセキュリティ対策として必要不可欠ですが、十分なプライバシーソリューションではありません。侵襲的なメタデータ収集、データ追跡、グローバルな監視に照らして、追加のプライバシーツールが全員にとって必要です。オンラインプライバシーは最終的に複数のツールを必要とし、プライバシー重視のVPNはこの第2の必要なツールです：デフォルトの暗号化を補完するだけでなく、それを増強します。

市場に出回っているほとんどの従来のVPNは、ユーザーのプライバシーを保証できません。これは、ユーザーメタデータを中央集権化する方法により、データ漏洩や政府の監視のリスクがあるためです。NymVPNのような新しい分散型VPNは、中央集権化のリスクをすべて回避するように設計されています。中央集権的なログ保持を不可能にし、独立したサーバーを通じたマルチホップルーティングにより、トラフィック分析やメタデータ漏洩に対する強力な保護層を追加します。

# sponsor
HStorageは、高度なセキュリティ機能を提供しているオンラインストレージサービスです。


https://hstorage.io/



# 参考リンク

- [Nym公式サイト](https://nymtech.net/)
- [Nymのミキシングネットワーク - Wikipedia](https://ja.wikipedia.org/wiki/Nymミックスネット)
- [Nymホワイトペーパー](https://nymtech.net/nym-whitepaper.pdf)
- [分散型VPN と中央集権型VPN:違いの全て](https://note.com/koko_crypto/n/n71fe7e92b68a)
- [ミックスネットとは何か？ VPNによる比類なきオンラインプライバシー](https://note.com/koko_crypto/n/n302e7516f691?magazine_key=m0129d65e3526)
- [Sphinx暗号-Nymを支える匿名データフォーマット](https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6)
- [ココナッツ認証（Coconut Credentials）とは？- プライバシーを保護するゼロ知識証明技術](https://qiita.com/pseudonym2/items/b2739ae32f4fb29de0b6)

# コミュニティ

- [Nym日本コミュニティ - Telegram](https://t.me/nymjapanese)
- [Nym日本コミュニティ - Discord](https://discord.com/invite/nym)
- [Nym日本コミュニティ - LINEオープンチャット](https://line.me/ti/g2/0YGYYq4EoQZ8fL5FYQmqU4O9SRuE_a6YX19GtA?utm_source=invitation&utm_medium=link_copy&utm_campaign=default)
- [Nym 公式LINE(現在非稼働)](https://line.me/R/ti/p/@986ytsdx?from=page&accountId=986ytsdx)
- [Nymプロジェクト日本語アカウント - X](https://x.com/nymproject_jp)