暗号化とは何か？総合ガイド（詳細ver.）



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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/ed9bf1ca-5e38-fd2d-a431-6f55936cf11b.png)

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

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

https://qiita.com/pseudonym2/items/f2c5e8c39f321e53295a



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

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

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

https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%8B%E3%82%B0%E3%83%9E_(%E6%9A%97%E5%8F%B7%E6%A9%9F)


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

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

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

https://qiita.com/pseudonym2/items/4d64b52a9a592aaf3091


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）
非対称暗号（公開鍵暗号、public key cryptographyとも呼ばれます）は、暗号化のための公開鍵（public key）と復号のための秘密鍵（private key）という2つの異なるキーを必要とします。これらのキーは大きな素数の特性に基づいて数学的にリンクされており、一方のキーで暗号化された情報は他方のキーでのみ復号できます。公開鍵は文字通り公開されており、広く共有されても問題ありません。したがって、誰かとプライベートに通信したい場合は、その人の公開鍵を使用してメッセージを暗号化し、受信者が持つ一意の秘密鍵を使用して復号します。RSAは1983年に公開鍵暗号を導入し、現在オンラインで使用される多くの暗号化プロトコルの基礎となっています。

### 楕円曲線暗号（ECC、Elliptical Curve Cryptography）
ECCは有限体上の楕円曲線の代数構造に基づいた、新しく急速に進化している暗号形式です。これは、特定の数学的問題（基数に対する曲線上のランダム要素の対数）の解決の難しさを利用して公開鍵と秘密鍵を生成する非対称の公開鍵暗号です。

ECCは暗号強度を最大化しながら、暗号化と復号の計算コストを最小化するため、非常に効率的です。これは、256ビットのECCキーがRSAの3072ビットキーに相当するためです。このため、ECCはSSL/TLS証明書、ブロックチェーン取引、WireGuardのような暗号プロトコル、さらにはモバイルデバイスのソフトウェアにますます使用されています。

## 新しい暗号化形式
現在、WireGuardなどの高度なVPNルーティングプロトコルで使用されている新しい暗号化アルゴリズムがあります。例えば、ChaCha20は非常に安全で、高速で、特定のサイバー攻撃に対して耐性のあるストリーム暗号(stream cipher)です。ストリーム暗号として、AESのように固定サイズのブロックにデータを暗号化するのではなく、データを一度に1ビットずつ暗号化します。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://qiita.com/pseudonym2/items/5c76326bb43aa944c8a5


これらの暗号化ステップは基本的に層を形成し、HTTPSはクリアテキストデータの核の周りの最初の層となります。



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


https://qiita.com/pseudonym2/items/835efb575aa5365bc268



Sphinxは、NymVPNを動かすmixnetのような匿名通信のために特別に設計された多層暗号化プロトコルです。

https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6

https://qiita.com/pseudonym2/items/e68ccf9b65bf8e98e380



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

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

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

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

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

- サイバー攻撃：キーはさまざまなデータハッキング攻撃によって不正に開示されることがあります。

https://qiita.com/pseudonym2/items/634ad47a82a0b159c7fb


フィッシング攻撃（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搭載システムがオンラインで私たちを積極的に追跡し、メタデータ、つまり私たちが行うすべての暗号化されたトラフィックに関連するデータを収集しています。これは私たちの個人情報よりも多くを明らかにすることがあります。

https://qiita.com/pseudonym2/items/9c892eac2ecbdb535168


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

https://qiita.com/pseudonym2/items/1254c1fe613981325706


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

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

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

https://qiita.com/pseudonym2/items/8bec88e3983e94c55b8f


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

https://qiita.com/pseudonym2/items/9d45bf63ddfd17edd0ae

https://qiita.com/pseudonym2/items/56bd351a6479624e77a9


異なるVPNサービスで暗号化がどのように機能するかについて詳しく知るには、NymのWireGuardとOpenVPNの暗号化通信プロトコルの比較をチェックしてください。

https://qiita.com/pseudonym2/items/0c9bfab3f0ded35f0cfc

# 参考リンク

- [Nym公式サイト](https://nymtech.net/)
- [Nymのミキシングネットワーク - Wikipedia](https://ja.wikipedia.org/wiki/Nymミックスネット)
- [Nymホワイトペーパー](https://nymtech.net/nym-whitepaper.pdf)
- [分散型VPNとは？](https://qiita.com/pseudonym2/items/9d45bf63ddfd17edd0ae)

- [ミックスネットとは何か？ VPNによる比類なきオンラインプライバシー](https://qiita.com/pseudonym2/items/e68ccf9b65bf8e98e380)
- [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)