エンコーディングと暗号化の違い
Base64、16進数、暗号
「エンコーディングと暗号化の違い」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
異なる2つの目的
エンコードと暗号化は、どちらも一見すると読めない形にデータを変換するため似て見えますが、その目的はまったく異なります。
- エンコードは、データを安全に保存または送信できるように、その形式を変更します。
- 暗号化は、鍵を持つ人だけが読めるようにデータの機密性を保護します。
この2つを混同することは、セキュリティ初心者によくある間違いの1つです。
エンコードは誰でも元に戻せる
エンコードでは、公開された周知の方式を使用します。秘密は関与しません。その方式を知っている人なら、誰でも即座にデータをデコードできます。
一般的なエンコードには、Base64、hex、URL encoding、ASCIIがあります。これらは、バイナリデータをメールやHTTPヘッダーなどのテキスト専用チャネルで扱えるようにするために存在します。
実際のBase64
Base64は、64種類の印字可能文字(A-Z、a-z、0-9、+、/)を使ってバイナリデータを表現します。データ量は約33パーセント増加します。末尾の=はパディングです。
鍵をまったく使わず、Linuxマシン上でデコードできます。
echo 'aGVsbG8gd29ybGQ=' | base64 -d
# Output: hello worldBase64の見分け方
ハッカーとして活動すると、JWTトークン、Cookie、設定ファイル、外部へ持ち出されたデータなど、あらゆる場所でBase64を目にします。あるデータがBase64であることを示す手がかりは次のとおりです。
A-Za-z0-9+/のみを含み、場合によっては=のパディングが付いている。- 長さが4の倍数である。
- デコードすると、読めるテキストや判別可能なファイルヘッダーになる。
疑わしい文字列を暗号化されていると判断する前に、必ずデコードを試してください。
16進エンコード
16進数エンコードでは、各バイトを2文字(0-9、a-f)で表します。ネットワークキャプチャ、メモリダンプ、ハッシュの出力で多用されます。
バイト値0x68 0x69は、ASCIIテキストの「hi」を表します。
echo -n 'hi' | xxd -p
# Output: 6869
echo '6869' | xxd -r -p
# Output: hi暗号化が加えるもの:鍵
暗号化では、暗号と秘密鍵を適用します。鍵がなければ、出力(暗号文)を逆算して元に戻すことは計算量的に困難です。
- 平文 = 元の読めるデータ。
- 暗号文 = 暗号化された出力。
- 鍵 = 暗号化と復号を制御する秘密。
鍵を変更すると、暗号文は完全に変わります。
古典暗号:シーザー暗号
シーザー暗号は、各文字を一定の数だけずらします。3文字ずらす場合、AはDになります。試行できる鍵が25種類しかないため、総当たりで簡単に破られてしまい、教育用の例にすぎません。
ROT13は、13文字ずらすシーザー暗号です。技術的には暗号ですが、実際のセキュリティはまったく提供しません。
echo 'hello' | tr 'a-z' 'd-za-c'
# Output: khoor (shift of 3)現代の暗号
実際の暗号化では、AES(共通鍵暗号)やRSA(公開鍵暗号)などのアルゴリズムを使用します。これらはアルゴリズムを秘密にするのではなく、大きな鍵と解くことが難しい数学的問題に依存しています。
Kerckhoffsの原則:暗号システムは、鍵以外のすべてが公開されていても安全であるべきです。セキュリティの源は鍵であり、アルゴリズムを隠すことではありません。
暗号文はランダムに見える
観察できる重要な違いがあります。優れた暗号文はエントロピーの高いランダムノイズのように見えますが、エンコードされたデータはそうではありません。
- 「hello」のBase64は、誰にとっても常に
aGVsbG8=です。 - 「hello」のAES出力は、鍵と初期化ベクトルによって変化し、毎回異なる出力になります。
鍵なしで文字列をデコードして読めるテキストが得られた場合、それは暗号化ではなくエンコードされています。
ハッカーにとって重要な理由
セキュリティ評価では、見えにくくされたデータを常に見つけることになります。「これはエンコードか暗号化か」と考えることで、次に取るべき行動が決まります。
- エンコードされている?鍵は不要なので、今すぐデコードします。Base64に隠された認証情報なら、すぐに成果を得られます。
- 暗号化されている?鍵を探す、鍵管理を攻撃する、または実装上の欠陥を探します。
エンコードをセキュリティだと扱うことは、繰り返し報告することになる脆弱性です。
難読化は3つ目の概念
3つ目のカテゴリである難読化にも注意してください。これは、実際の暗号や鍵管理を使わずに、データを意図的に読みにくくすることです(minified JS、パックされたバイナリ、固定バイトとのXORなど)。
エンコードと同様に、難読化は真の機密性を提供しません。単に、気軽に確認する人の解析を遅らせるだけです。熟練したアナリストは、日常的にこれを元に戻します。
クイックチェック
基本的な違いについての理解度を確認してください。
まとめ
エンコードと暗号化の重要な違いを学びました。
- エンコード(Base64、hex)は誰でも元に戻せ、形式を変更するだけです。
- 暗号化(AES、RSA)には秘密鍵が必要で、機密性を保護します。
- 難読化は隠すだけで、安全にするものではありません。
- 疑わしい文字列は、まず必ずデコードしてください。暗号文はランダムノイズのように見えますが、エンコードされたデータは鍵なしでデコードして読める内容になります。
次は、エンコードとも暗号化とも異なる一方向変換、ハッシュについて学びます。
よくある質問
「エンコーディングと暗号化の違い」レッスンは無料ですか?
はい。「エンコーディングと暗号化の違い」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「エンコーディングと暗号化の違い」で何を学びますか?
Base64、16進数、暗号 ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「エンコーディングと暗号化の違い」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エンコーディングと暗号化の違い
- ハッシュ化
- 対称暗号と非対称暗号
- ハッシュのクラック