RSA暗号化とは何で、どのように機能しますか?

RSA暗号化は、かつて暗号化における最大の問題の一つであったものを解決するシステムです。

この記事では、RSA暗号化がどのように開発されたのか、その仕組み、その背後にある数学、それが何のために使用されているのか、そしてそれが直面, RSAについて学ぶことで、オンラインライフのいくつの部分が安全に保たれているかを理解するのに役立つ基本的な知識が得られます。

RSA暗号化とは何ですか?

あなたの友人に秘密を伝えたいとしましょう。 隣にいるならささやくだけでいい あなたが国の反対側にいるなら、それは明らかにうまくいかないでしょう。 あなたはそれを書き留めて郵送したり、電話を使ったりすることができますが、これらの通信チャネルのそれぞれは安全ではなく、十分な動機を持つ,

秘密が十分に重要だった場合、あなたはそれを普通に書き留める危険はありません–スパイや不正な郵便従業員はあなたのメールを見ている可 同様に、誰かがタップでお電話的にログイン毎に電話をお願い致します。

盗聴者がメッセージの内容にアクセスするのを防ぐための一つの解決策は、それを暗号化することです。 これは基本的に、メッセージにコードを追加して、それを混乱させた混乱に変えることを意味します。 コードが十分に複雑である場合、元のメッセージにアクセスできるのは、コードにアクセスできる人だけです。,

あなたが事前にあなたの友人とコードを共有する機会があれば、あなたのいずれかがメッセージの内容を読む能力を持つ唯一のものであることを知って、いつでも暗号化されたメッセージを送信することができます。 しかし、事前にコードを共有する機会がなかった場合はどうなりますか?

これは、RSAのような公開鍵暗号方式(非対称暗号とも呼ばれる)によって対処されてきた暗号の基本的な問題の一つです。

RSA暗号化では、メッセージは公開キーと呼ばれるコードで暗号化され、公開されて共有されます。, RSAアルゴリズムのいくつかの異なる数学的特性のために、メッセージが公開キーで暗号化されると、秘密キーと呼ばれる別のキーによってのみ復号化できま 各RSAユーザーには、公開キーと秘密キーで構成されるキーペアがあります。 名前が示すように、秘密キーは秘密にしておく必要があります。

公開鍵暗号化方式は、暗号化と復号化の両方のプロセスが同じ秘密キーを使用する対称鍵暗号化方式とは異なります。, これらの違いにより、RSAのような公開鍵暗号化は、事前に鍵を安全に配布する機会がない状況での通信に役立ちます。

対称鍵アルゴリズムには、個人使用のためのデータの暗号化や、秘密鍵を共有できる安全なチャネルがある場合など、独自のアプリケーションがあ

も参照してください:公開キー暗号化

RSA暗号化はどこで使用されますか?

RSA暗号化は、他の暗号化方式と組み合わせて、またはメッセージの信頼性と完全性を証明できるデジタル署名に使用されることがよくあります。, 対称鍵暗号化よりも効率が低く、リソースが多いため、メッセージまたはファイル全体を暗号化するためには一般的に使用されません。

物事をより効率的にするために、ファイルは一般的に対称鍵アルゴリズムで暗号化され、次に対称鍵はRSA暗号化で暗号化されます。 このプロセスでは、RSA秘密キーにアクセスできるエンティティのみが対称キーを復号化できます。

対称キーにアクセスできなければ、元のファイルを復号化することはできません。, この手法が使われているメッセージおよびファイルの確保、あくまでも目安となり消費も多くの計算資源です。

RSA暗号化は、さまざまなシステムで使用できます。 OpenSSL、wolfCrypt、cryptlib、およびその他の多くの暗号化ライブラリで実装できます。

RSAは、最初に広く使用されている公開鍵暗号化方式の一つとして、当社の安全な通信の多くの基盤を築きました。 これは伝統的にTLSで使用されており、pgp暗号化で使用される元のアルゴリズムでもありました。, RSAは、webブラウザ、電子メール、Vpn、チャット、その他の通信チャネルの範囲で依然として見られます。

RSAは、VPNクライアントとVPNサーバー間の安全な接続を確立するためにもよく使用されます。 OpenVPNのようなプロトコルでは、TLSハンドシェイクはRSAアルゴリズムを使用して鍵を交換し、安全なチャネルを確立できます。

RSA暗号化の背景

この記事の冒頭で述べたように、公開鍵暗号化前は、事前に鍵を安全に交換する機会がなかった場合、安全に通信する, 事前にコードを共有する機会がなかったり、キーを配布できる安全なチャネルがなかったりすると、敵がメッセージの内容を傍受してアクセスできるという脅威なしに通信する方法はありませんでした。

物事が本当に変わり始めたのは1970年代までではありませんでした。 私たちが現在公開鍵暗号と呼んでいるものに向けた最初の主要な開発は、James H.Ellisによって十年の初めに出版されました。, Ellisは自分の仕事を実装する方法を見つけることができませんでしたが、同僚のClifford Cocksによって拡張され、現在RSA暗号化として知られているものになり

パズルの最後のピースは、現在Diffie-Hellman鍵交換と呼ばれているものです。 別の同僚であるMalcolm J.Williamsonは、たとえチャネルが敵によって監視されていても、二人の当事者が暗号鍵を共有できるようにするスキームを考え出しました。

この作業のすべては、英国情報局、政府通信本部(GCHQ)で行われ、発見は機密保持されました。, 技術的な制限のために、GCHQは当時公開鍵暗号の使用を見ることができなかったため、開発はほこりを集める棚の上にぼんやりと座っていました。 この作品が機密解除され、RSAの元の発明者が認められたのは1997年までではありませんでした。

数年後、同様の概念が公共の場で発展し始めていました。 Ralph Merkleは、Diffie-Hellman鍵交換の設計においてWhitfield DiffieとMartin Hellmanに影響を与えた公開鍵暗号の初期の形式を作成しました。,

DiffieとHellmanのアイデアは、彼らの仕事を公開鍵暗号の基礎にする重要な側面を欠いていました。 これは反転するのが難しい一方向関数でした。 1977年、Ron Rivest、Adi Shamir、Leonard Adlemanは、その姓がRSAの頭字語を形成していますが、この問題について一年間労働した後に解決策を思いつきました。

MITを拠点とする学者たちは、1977年の過越祭パーティーの後に画期的な成果を上げました。, 夜の飲酒の後、Rivestは家に帰ったが、寝る代わりに、彼は必要な一方向機能のための彼のアイデアを形式化した論文を無我夢中で書いた。

このアイデアは1983年にMITによって特許取得されましたが、RSAアルゴリズムが重要なセキュリティツールとして広く採用され始めたのは、インターネットの初期までではありませんでした。

RSA暗号化はどのように機能しますか?

以下は、あまりにも多くの読者がおそらく彼らの高校の数学の先生によって傷ついているので、単純化のビットになるだろう。, 数学があまりにも手に負えないようにするために、いくつかの概念を単純化し、はるかに小さな数字を使用します。 実際には、RSA暗号化は、大きさがはるかに大きい素数を使用し、他にもいくつかの複雑さがあります。

すべてがどのように適合するかを説明する前に、頭を下げなければならないいくつかの異なる概念があります。 これらには、トラップドア関数、素数の生成、Carmichaelのtotient関数、および暗号化および復号化プロセスで使用される公開鍵と秘密鍵の計算に関わる別々のプロセスが含まれます。,

トラップドア機能

RSA暗号化は、アルゴリズムが一方向に計算するのは簡単ですが、逆にほとんど不可能であるという前提の下で動作します。 例として、701,111が二つの素数の積であると言われた場合、それら二つの数が何であるかを把握することができますか?

電卓やコンピュータであっても、私たちのほとんどはどこから始めるべきか分からないでしょう。 しかし、物事をひっくり返すと、はるかに簡単になります。, の結果は何ですか:

907×773

あなたが十分に退屈していたなら、あなたはあなたの携帯電話を取り出すか、あなたの頭の中でそれを計算して、答えが前述の701,111であることを発見することができたでしょう。 この907と773は私たちの最初の質問に答える素数であり、特定の方程式は一つの方法を理解するのは簡単ですが、逆には一見不可能であることを示し

この方程式のもう一つの興味深い側面は、あなたがすでに他のものと製品を持っているならば、素数のいずれかを把握するのが簡単であるという, 701,111が907に別の素数を掛けた結果であると言われた場合、

701,111÷907=773

これらの数の関係は一方向に計算するのは簡単ですが、逆に非常に難しいため、式はトラップドア関数として知られています。 上記の例では、人々が理解するのは難しいですが、コンピュータは些細な時間で操作を行うことができます。

このため、RSAははるかに大きな数値を使用します。, 実際のRSA実装における素数のサイズはさまざまですが、2048ビットRSAでは、617桁の長さのキーを作成するために一緒になります。 あなたがそれを視覚化するのを助けるために、キーはこのサイズの数になります:

素数の生成

上記のトラップドア関数は、公開鍵と秘密鍵の暗号 特許公開鍵を共有するな脅威を与メッセージを明らかにするものとする。 また、一方のキーでデータを暗号化することもでき、ペアのもう一方のキーでのみ復号化できるようになります。,

RSAでメッセージを暗号化する最初の手順は、鍵を生成することです。 これを行うには、素数検定で選択された二つの素数(pとq)が必要です。 素数性検定は、ラビン-ミラー素数性検定のように、素数を効率的に見つけるアルゴリズムです。

RSAの素数は非常に大きく、比較的離れている必要があります。 小さいまたは一緒に近い数字は、はるかに簡単にクラックされます。 しかし、例サンプルとして提供されている小型化のための番号のものや角英数字で入力して下さい.,

素数検定は、上記で使用した素数、907と773を与えるとしましょう。 次のステップは、次の式を使用して、モジュラス(n)を発見することです:

n=p x q

ここで、p=907およびq=773

したがって、

n=907×773

n=701,111

Carmichaelのtotient関数

nがあれば、Carmichaelのtotient関数を使用します。

θ(n)=lcm(p−1,q−1)

数学の教科書を叩いてからしばらく経ったら、上記は少し恐ろしく見えるかもしれません。, あなたはこの部分をスキップして、数学がうまくいくことを信じることができます。 すべての説明を詳しくでお客様のヘッド周辺にあります。

気づいていない人のために、λ(n)はNに対するCarmichaelのtotientを表し、lcmはpとqの両方が分けることができる最小の数である最小の公倍数を意味します。 これを理解するにはいくつかの異なる方法がありますが、最も簡単なのは、オンライン計算機を信頼して方程式を実行することです。, それでは、方程式に私たちの数字を入れてみましょう:

√(701,111)=lcm(907 − 1, 773 − 1)

φ(701,111)=lcm(906,772)

上記の電卓を使用すると、次のようになります。

φ(701,111)=349,716

公開鍵の生成

カーマイケルの素数の合計が得られたので、次のようになりました。公開鍵。 RSAでは、公開鍵はnと同様に素数eで構成されています。eは1とπ(n)の値の間の何でもかまいません(この例では349,716です)。,

公開鍵は公然と共有されているため、eが乱数であることはそれほど重要ではありません。 実際には、eは通常65,537に設定されていますが、はるかに大きな数がランダムに選択されると、暗号化の効率がはるかに低くなります。 今日の例では、計算を効率的にするために数値を小さくしておきます。 たとえば、

e=11

最終的に暗号化されたデータは暗号文(c)と呼ばれます。 次の式で公開鍵を適用することによって、平文メッセージ(m)からそれを導出します。

c=me mod n

すでにeを考え出しており、nも知っています。, 説明する必要があるのはmodだけです。 これは、この記事の深さから少し外れていますが、モジュロ演算を指し、本質的には一方の辺を他方の辺で割ったときに残った残りを意味します。 たとえば、

10mod3=1

これは、3が10に三回入り、残りが1になるためです。

私たちの方程式に戻ります。 物事をシンプルに保つために、暗号化して秘密にしたいメッセージ(m)が単なる単一の数字、4であるとしましょう。, すべてをプラグインしましょう:

c=me mod n

c=411mod701,111

c=4,194,304mod701,111

ここでも、モジュロ操作を簡単にするために、オンライン計算機を使用しますが、あなた自身 4,194,304をオンライン計算機に入力すると、次のようになります。

c=688,749

したがって、RSAを使用してメッセージ4を公開鍵で暗号化すると、688,749の暗号文が得られます。, 前のステップは少し数学が重すぎるように見えたかもしれませんが、実際に何が起こったのかを繰り返すことが重要です。

私たちは秘密にしたかった4のメッセージを持っていました。 それに公開鍵を適用し、688,749の暗号化された結果が得られました。 暗号化されたので、番号688,749をキーペアの所有者に安全に送信できます。 彼らは彼らの秘密鍵でそれを復号化できる唯一の人です。 彼らはそれを復号化すると、彼らは私たちが本当に送信していたメッセージが表示されます、4。,

秘密キーの生成

RSA暗号化では、データまたはメッセージが公開キーで暗号文に変換されると、同じキーペアの秘密キーによってのみ復号化できます。 私たちはすでにnを知っており、dを見つけるために次の式を使用しています:

d=1/e modθ(n)

上記の公開鍵の生成セクションでは、この例ではeが11に等しいことをすでに決定しています。 同様に、π(n)はCarmichaelのtotient関数の下での以前の研究から349,716に等しいことがわかります。, 式のこのセクションに出くわすと、物事はもう少し複雑になります。

1/e mod

この式は、1を11で割るように求めているように見えるかもしれませんが、そうではありません。 代わりに、これは単にe(この場合は11)とσ(n)(この場合は349,716)のモジュラー逆数を計算する必要があることを象徴しています。

これは本質的に、標準的なモジュロ演算を実行する代わりに、代わりに逆演算を使用することを意味します。, これは通常、拡張ユークリッドアルゴリズムで見つかりますが、この記事の範囲外ですので、代わりにオンライン計算機をごまかして使用します。,

d=1/11mod349,716

この操作を実行するには、単に11を入力します(またはあなた自身の例でこれを試みている場合はeに対して持つ可能性のある値)Integerと349,716(またはあなた自身の例でこれを試みている場合はπ(n)に対して持つ可能性のある値)上記リンクされたオンライン計算機でModuloと書かれています。,

d=254,339

dの値が得られたので、次の式を使用して公開キーで暗号化されたメッセージを復号化できます。

m=cd mod n

暗号化した暗号文に戻ることができます。 公開鍵でメッセージを暗号化すると、cの値が688,749になりました。 上から、dは254,339に等しいことがわかります。 また、nが701,111に等しいことも知っています。 これは私たちを与える:

m=688,749254,339mod701,111。,

あなたが気づいたかもしれないように、254,339番目の乗に数を取ろうとすると、ほとんどの通常の電卓にとっては少し多いかもしれません。 代わりに、オンラインRSA復号計算機を使用します。 別の方法を使用したい場合は、通常と同じように力を適用し、公開鍵の生成セクションと同じ方法でモジュラス演算を実行します。,

上記にリンクされている電卓では、701,111と入力します供給係数:N、254,399と入力します復号化キー:D、688,749と入力します暗号文メッセージを数値形式で表します。

データを入力したら、Decryptを押して、上記の復号式に数字を入れます。 これにより、下のボックスに元のメッセージが表示されます。 すべてを正しく行った場合は、公開鍵で暗号化した元のメッセージである4の答えを得る必要があります。,

RSA暗号化が実際にどのように機能するか

上記のセクションでは、公開鍵暗号化の背後にある数学がどのように機能するかを合理的に把握する必要があります。 それは少し混乱することができますが、方程式の複雑さを理解していなかった人でさえ、プロセスに関する重要な情報を奪うことができます。

上記の手順では、事前にコードを共有することなく、二つのエンティティが安全に通信できる方法を示しました。 まず、それぞれが独自の鍵ペアを設定し、公開鍵を互いに共有する必要があります。, 二つのエンティティは、通信を安全に保つために秘密キーを秘密に保つ必要があります。

送信者が受信者の公開キーを取得すると、それを使用して安全に保ちたいデータを暗号化できます。 公開キーで暗号化されると、同じキーペアの秘密キーによってのみ復号化できます。 同じ公開鍵であっても、データを復号化するために使用することはできません。 これは、上で述べたトラップドア機能の特性によるものです。

受信者が暗号化されたメッセージを受信すると、受信者は秘密キーを使用してデータにアクセスします。, 受信者が安全な方法で通信を返したい場合は、通信している相手の公開鍵でメッセージを暗号化できます。 ここでも、公開キーで暗号化されると、情報にアクセスできる唯一の方法は、一致する秘密キーを介して行われます。

このようにして、RSA暗号化は、以前に未知の当事者が安全にデータを送信するために使用することができます。 私達が私達のオンライン生命で使用する通信チャネルの重要な部分はこの基礎から造り上げられた。,

RSAでより複雑なメッセージを暗号化するにはどうすればよいですか?

この例では、理解しやすくするために多くのことを単純化しましたが、そのため、”4″のメッセージのみを暗号化しました。 数字4を暗号化できることは特に有用ではないように思われるので、対称キー(RSAの最も一般的な使用)やメッセージなど、より複雑なデータセットをどのように暗号化することができるのか疑問に思うかもしれません。,

一部の人々は、”n38cb29fkbjh138g7fqijnf3kaj84f8b9f…”のようなキーや”buy me a sandwich”のようなメッセージが、文字ではなく数字を扱うRSAのようなアルゴリズムで暗号化可能であることに困惑するかもしれません。 現実には、私たちのコンピュータが処理するすべての情報はバイナリ(1と0)に格納されており、ASCIIやUnicodeなどのエンコード標準を使用して、人間が理解でき,

これは、”n38cb29fkbjh138g7fqijnf3kaj84f8b9f…”のようなキーや”buy me a sandwich”のようなメッセージがすでに数字として存在し、RSAアルゴリズムで簡単に計算でき それらが表される数字は、私たちが管理するのがはるかに大きくて難しいので、バイナリの寄せ集めではなく英数字を扱うことを好む理由です。

長いセッションキーまたはより複雑なメッセージをRSAで暗号化したい場合は、はるかに多くの数が必要になります。,

Padding

RSAが実装されている場合、多数の攻撃を防ぐためにpaddingと呼ばれるものを使用します。 これがどのように機能するかを説明するために、例から始めます。 あなたが友人にコード化されたメッセージを送っていたとしましょう:

親愛なるカレン、

私はあなたが元気であることを願っています。 まだ明日夕食してるの?

あなたの心から、

James

各文字をアルファベットでそれに続くものに変更することによって、メッセージを簡単な方法でコード化したとしましょう。 これにより、メッセージが次のように変更されます。

Efbs Lbsfo,

J ipqf zpv bsf xfmm。, こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。

Zpvst tjodfsfmz,

Kbnft

あなたの敵がこの手紙を傍受した場合、彼らはコードを試してみて、クラックするために使用することができるトリックがあります。 見ることができる形式の文字としてみて思うのはメッセージがきていることが多い。 “こんにちは”、”こんにちは”、”親愛なる”または他のいくつかの規則で彼らの手紙を普通始めることを彼らは知っている。”こんにちは”または”こんにちは”を最初の単語として適用しようとすると、それが文字数に合わないことがわかります。

“こんにちは”または”こんにちは” 彼らは”親愛なる”を試すことができます。, それは合うが、それは必ずしも何も意味しない。 攻撃者はそれを試して、それがどこに導いたのかを見るだけです。 したがって、”e”、”f”、”b”、”s”の文字をそれぞれ”d”、”e”、”a”、”r”に変更します。 これはそれらを与えるだろう:

親愛なるLaseo、

J ipqe zpvはxemmです。 こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは

Zpvrt tjoderemz,

Kanet

それでもかなり混乱しているように見えるので、攻撃者は手紙をどのように結論付けるかなど、他の規則を見てみるかもしれません。 人々はしばしば最後に”From”または”Kind results”を追加しますが、これらのどちらも形式に適合しません。, その代わりに、攻撃者がうま”に置き換えてその他の文字が見所です。 “Z”、”p”、”v”、”t”、”j”、”o”、”d”、”m”をそれぞれ”y”、”o”、”u”、”s”、”i”、”n”、”c”、”l”に変更すると、次のようになります。

親愛なるLasen、

私はあなたがxellであることを知っています。

私はあなたがxellであることを知っていますか?

私はあなたがxellであることを知っていますか?

私はあなたがxellで Xeトゥイルiawinhディンネスuonossoxですか?

あなたの心から、

Kanet

その変更後、攻撃者がどこかに到達し始めているように見えます。 彼らは、最初の推測を構成した言葉に加えて、”私”、”あなた”、”ある”という言葉を見つけました。,

単語が正しい文法的な順序であることを見ると、攻撃者は正しい方向に向かっていると確信することができます。 今では、彼らはおそらく、各文字がアルファベットでそれに続くものに変更されるコードが関与していることに気付いています。 彼らがこれを実現すると、残りの部分を翻訳して元のメッセージを読むことが容易になります。

上記の例は単純なコードでしたが、ご覧のとおり、メッセージの構造は攻撃者にその内容についての手がかりを与えることができます。, 確かに、それはちょうどその構造からメッセージを把握することは困難であり、それはいくつかの教育を受けた当て推量を取ったが、あなたはコンピュータ これは、構造や他の要素から来る手がかりに基づいて、はるかに短い時間ではるかに複雑なコードを把握するために使用できることを意味します。

構造がコードをクラックしてメッセージの内容を明らかにする可能性がある場合は、メッセージを安全に保つために構造を隠す方法が必要です。 そこでパディングします。,

メッセージが埋め込まれると、ランダム化されたデータが追加され、暗号化されたメッセージが壊れる可能性のある元の書式設定の手がかりを隠します。 RSAを使用すると、暗号化されたキーには、上記の例で手がかりを与えるのに役立つ文字の明白な書式がないため、物事は少し複雑になります。

これにもかかわらず、敵対者はコードの数学的性質を悪用し、暗号化されたデータを破壊するために多くの攻撃を使用することができます。 この脅威のため、RSAの実装では、OAEPのようなパディング方式を使用してメッセージに余分なデータを埋め込みます。, このパディング前のメッセージを暗号化するRSAります。

署名メッセージ

RSAは、データの暗号化以外にも使用できます。 そのプロパティは、メッセージが送信されたと主張するエンティティによって送信されたことを確認したり、メッセージが変更または改ざんされていな,

誰かが自分のメッセージの真正性を証明したいとき、彼らは平文のハッシュ(任意のサイズのデータを受け取り、それを固定長の値に変える関数)を計算し、それを自分の秘密鍵で署名することができます。 彼らは、復号化で使用されるのと同じ式を適用してハッシュに署名します(m=cd mod n)。 メッセージが署名されると、メッセージと一緒にこのデジタル署名を受信者に送信します。,

受信者がデジタル署名を持つメッセージを受信した場合、その署名を使用して、メッセージが送信したと主張するユーザーの秘密鍵によって本物の署 また、メッセージが送信された後に攻撃者によって変更されたかどうかも確認できます。

デジタル署名をチェックするために、受信者は最初に同じハッシュ関数を使用して、受信したメッセージのハッシュ値を見つけます。, 次に、受信者は、暗号化式(c=me mod n)を使用して送信者の公開鍵をデジタル署名に適用して、デジタル署名のハッシュを与えます。

受信したメッセージのハッシュを暗号化されたデジタル署名からのハッシュと比較することにより、受信者はメッセージが本物であるかどうかを 二つの値が同じ場合、メッセージは元の送信者によって署名されて以来、変更されていません。 メッセージが単一の文字でも変更されていた場合、ハッシュ値は完全に異なります。,

RSAセキュリティ&攻撃

ほとんどの暗号システムと同様に、RSAのセキュリティは、それが実装され、使用される方法に依存します。 一つの重要な要因は、キーのサイズです。 キーのビット数が大きいほど(本質的にキーの長さ)、ブルートフォーシングやファクタリングなどの攻撃をクラックすることはより困難です。

RSAのような非対称鍵アルゴリズムは整数分解によって壊れる可能性があるのに対し、AESのような対称鍵アルゴリズムは壊れないため、同じレベルのセキュリティを達成するためにはRSA鍵をはるかに長くする必要があります。,

現在、因数分解されている最大のキーサイズは768ビット長です。 これは、数百のマシンを使用して、二年間にわたって学者のチームによって行われました。

ファクタリングは2009年末までに完了し、計算能力はその時以来大きく成長しているので、同様の強度の試みがはるかに大きなRSA鍵を因数分解することができると仮定することができる。

それにもかかわらず、この種の攻撃に必要な時間とリソースは、ほとんどのハッカーの手の届かないところに置き、国家の領域に置きます。, 使用するのに最適な鍵の長さは、個々の脅威モデルによって異なります。 米国国立標準技術研究所では、2048ビットの最小キーサイズを推奨していますが、脅威レベルが高い場合には4096ビットのキーも使用されます。

因数分解は、RSAを壊すことができる一つの方法です。 他の多くの攻撃は、より少ない量のリソースで暗号化を破壊する可能性がありますが、これらは実装およびその他の要因に依存し、必ずしもRSA自体ではありません。 これらのいくつかは次のとおりです。

素数は本当にランダムですか?,

RSAのいくつかの実装では、弱い乱数生成器を使用して素数を考え出します。 これらの数字が十分にランダムでない場合、攻撃者がそれらを考慮して暗号化を解除することがはるかに容易になります。 この問題は、暗号的に安全な擬似乱数生成器を使用することによって回避することができる。

貧弱な鍵生成

RSA鍵は、安全であるために特定のパラメータ内に収まる必要があります。 素数pとqが近すぎると、キーは簡単に発見できます。 同様に、秘密鍵の一部を構成する番号dは小さすぎることはできません。, 低い値を設定すると、解きやすくなります。 これらの数字は、あなたのキーを安全に保つために十分な長さであることが重要です。

サイドチャネル攻撃

これらは、RSAを直接破壊するのではなく、その実装からの情報を使用して、攻撃者に暗号化プロセスに関するヒントを与 これらの攻撃には、使用されている電力量の分析や、実行時間の測定値を使用して秘密キーを検出する分岐予測分析などが含まれます。

別のタイプのサイドチャネル攻撃は、タイミング攻撃として知られている。, 攻撃者がターゲットのコンピューター上でさまざまな暗号化されたメッセージの復号化時間を測定する能力を持っている場合、この情報により、攻撃者はターゲットの秘密キーを確認できるようになります。RSAのほとんどの実装では、暗号化プロセス中に一回限りの値を追加することによってこの攻撃を回避し、この相関を削除します。 このプロセスは暗号化盲検と呼ばれます。

RSA暗号化は将来的に安全ですか?

あなたはRSAは考えずに将来のことを考えての使用も可能。, 注意点は、正しく実装し、正しいパラメータ内にあるキーを使用する必要があるということです。 先ほど説明したように、paddingを使用しない実装、不十分なサイズの素数を使用する実装、またはその他の脆弱性を持つ実装は安全とはみなされません。

RSA暗号化を使用する場合は、1024ビット以上のキーを使用していることを確認してください。 脅威モデルが高い人は、RSAを自信を持って使用したい場合は、2048ビットまたは4096ビットのキーに固執する必要があります。, RSAが持つ弱点を意識し、正しく使用している限り、鍵共有や公開鍵暗号化を必要とするその他の同様のタスクにRSAを使用しても安全であると感じ

関連項目:一般的な暗号化タイプの説明

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です