この暗号の基礎に関する3部シリーズの最初の投稿です。 シリーズは次のように概説されています。
- 対称暗号化
- データ整合性&認証された暗号化
- 公開/秘密キーペアによる非対称暗号化
コンピュータサイエンスの世界に飛び込むことは困難な作業になる可能性があります。 特に一人で!, このブログシリーズでは、必ずしもどこから始めるべきかわからないトピックをさらに掘り下げようとしている人のために、暗号の基本に関する高 この概要は、Courseraで利用可能なDan Bonehによって教えられたStanfordのCryptography Iコースからの私の主なテイクアウトに特に基づいています。
私は伝統的なcomp-sciの背景から来ていないブロックチェーン開発者であるため、このコースを受講することにしました。 私は大学で経済学を学んだが、私は私のキャリアを始めたとして、コンピュータプログラミン, 私がコーディングを始めて以来、私は”コンピュータに近づく”ことを使命にしてきました—私はweb開発者として楽しんだ抽象化の層を剥がし、フードの下で何が起こっているのかを理解するために。 ウェブ開発からcryptocurrencyと分散システムに移行することは、多くの点でその方向への野生で素晴らしいステップでしたが、少なくともそのうちの暗号の概念にもっと慣れてきました。 しかし、私はより強固な基盤を望んでいました。, それは非常に広大なフィールドだから、私はそれが特別にスタンフォード大学からキュレーションフォーラムでこの情報を消費するために$70をドロップ また、無料で課題を渡すことなく、このコースを監査することができます。 インターネットの不思議!
始めましょう。
基本的に、暗号化は、潜在的な第三者の敵の存在下での安全な通信の実践です。 安全な通信の概念は、2つの主要なポイントで構成されています:
- 盗聴に対するセキュリティ:これは、データの機密性を保証します。,
- データ操作に対するセキュリティ:これにより、誰もあなたが送信したデータを操作し、操作されたデータを有効として受け入れるように受信者を欺くこと
データの機密性は暗号化によって達成されます。
- 対称暗号化では、通信しているすべての参加者の間で共有する必要がある単一のキーを使用します。
- 非対称暗号化では、個人キーを使用します。, 各参加者は、通信時にメッセージを暗号化および復号化するための独自の公開鍵と秘密鍵のペアを持っています。
(注:このブログ記事では、対称暗号化の文脈での暗号化について説明します。 フォローアップ記事では、非対称暗号化について説明します。)
データ暗号化:暗号の二つのタイプ
暗号化は、データの機密性を保証し、二つの重要なコンポーネントを含みます:
- 秘密鍵:対称暗号化のコンテキストでは、我々は、私たちの参加者、アリスとボブは、共有秘密鍵を持っていると仮定することができます。,
- 暗号:アルゴリズムのセット、暗号化のためのものと復号化のためのもの。
暗号化および復号化アルゴリズムは公に知られていることに注意することが重要です。 秘密にされている唯一のものは鍵です。
ストリーム暗号とブロック暗号の二つのタイプの暗号です。 これらの暗号の両方を適切に理解するための潜在的な前提条件は、ビットごとの演算(ビットに対して実行される演算)の知識です。 より具体的には、排他的論理和(xor)の概念である。 私はビット単位の操作の非常に明確な説明を与えるためにこのblogpostを見つけました。, または、下の図を使用してXORの概念を理解しようとすることもできます。 基本的に二つのビットが組み合わされ、それらが異なる場合(一つの0と1)、それらが同じ場合(両方の0または両方の1)、それらは0になります。 ここから、読者がXORの概念を理解しており、XORの普遍的な表記法は次のとおりであると仮定します。⊕
Stream Cipher
ストリーム暗号は対称鍵暗号であり、平文(バイト形式)は暗号化された暗号文を生成するための鍵(バイト形式)でビットごとにXORされます。, 同じプロセスが暗号文を復号化するために使用されます。 XOR操作の性質を考えると、暗号文を鍵でXORすると、元の平文に戻ります。