質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

5回答

4425閲覧

暗号化・復号化のアルゴリズムについて

golphe

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

3クリップ

投稿2017/08/29 12:34

ファイルを暗号化・復号化する処理をつくろうとしています。

  1. 現在使われている暗号化・復号化アルゴリズムは、どんなものが一番破られにくいのでしょうか?

  2. 暗号周りの事を調べていて、ed_25519というアルゴリズムを知りました。公開鍵暗号でつかわれているようですが、

通信内容の暗号化はこれとは別のアルゴリズムで暗号化されているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohhoy

2017/08/29 12:42

探しているのは公開鍵方式、共通鍵方式どちらでしょう?
guest

回答5

0

1.に対する回答
明確な回答は難しいです。新しいアルゴリズムや、鍵長の長いアルゴリズムが良いように考えるかもしれません。ですが、アルゴリズムそのものに欠陥がないことを数学的に証明するのは困難なため、長い検証期間が必要になります。現状だと米政府が標準暗号として指定している、Rijndael暗号やRSA暗号を用いるのが現実的な選択となるでしょう。

2.に対する回答
共通鍵の交換に公開鍵暗号を使用し、データの暗号には共通鍵暗号を使用します。公開鍵暗号は処理に時間がかかるため多くのデータを処理するには向かない為です。現在SSL/TLSで用いられるのはRSAとDiffie-Hellmanです。

貴方の見つけた「ed_25519」は電子署名の為のアルゴリズムで、暗号通信の為の物では無いですね。

投稿2017/08/30 03:08

Kunihiro_Narita

総合スコア472

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/03 12:11

単にファイルを暗号化したいというだけなら、秘密鍵暗号で暗号化するのが普通のようです。それでも自分だけで使いたいとか、オリジナルな暗号ソフトを作りたいというのであれば、多少時間がかかっても公開鍵暗号でデータを暗号化することも不可能ではありません。(暗号文のサイズは増えます)ed_25519については私もよく知らなかったのですが、楕円曲線暗号の一つですね。今のところこれが最強なんじゃないでしょうか。もっとも2022年には国際的に公開鍵暗号の規格が変わるようですが。
guest

0

回答の前に、書籍「暗号技術入門 第3版 秘密の国のアリス」をおすすめしておきます。


現在使われている暗号化・復号化アルゴリズムは、どんなものが一番破られにくいのでしょうか?

現在実用されている暗号アルゴリズムは、絶対に破られないものは存在しません。膨大な量の計算機を用意すればいずれは破られてしまうものばかりです。それでも実用されているのは、それらの暗号化アルゴリズムが 計算量的安全性 をもつ、つまり現実的に用意できる計算機と時間では破られないことを安全性の根拠としています。

暗号アルゴリズムによっては、脆弱性が発見されたことでより短時間で破られてしまうものも存在します。質問への回答としては、「脆弱性が発見されていないアルゴリズム」を用いて「鍵長が長いほど破られにくい」となります。

(注:暗号化強度は暗号アルゴリズム選択にも依存しますから、鍵長だけによる安全性判断はできません。つまり、"鍵長1024bitの暗号A"よりも"鍵長2048bitの暗号B"が安全か否かという直接比較はできないという意味です。ただし、比較のため"鍵長2048bitの暗号B"は"鍵長512bitの暗号A相当"のような換算が行われることもあるようです。なぜそのような換算が可能なのか理解するのは暗号学の知識が必要だと思われます...私は知りません。)

暗号周りの事を調べていて、ed_25519というアルゴリズムを知りました。公開鍵暗号でつかわれているようですが、
通信内容の暗号化はこれとは別のアルゴリズムで暗号化されているのでしょうか?

通信内容の暗号化=SSLやTLS を仮定します。これらの通信路暗号化では公開鍵暗号と共通鍵暗号を組み合わせて、公開鍵暗号で"共通鍵暗号の鍵"を保護+共通鍵暗号でデータ本体を保護しています。共通鍵暗号は公開鍵暗号に比べて計算量が少ないため、このようなハイブリッド方式が採用されます。

投稿2017/08/30 02:29

編集2017/08/30 02:50
yohhoy

総合スコア6189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/30 02:37

同じアルゴリズムであればともかく、異なるアルゴリズムの比較に鍵長を「絶対」指標とするのは、ちょっと誤解を与えると思います。
yohhoy

2017/08/30 12:16 編集

おっしゃることには同意です。 うまい文章表現が思いつかないのでそのままですが、ここでは「アルゴリズムAの鍵長M」と「アルゴリズムBの鍵長N」の安全性比較は意図していません。あくまで定性的な傾向として述べているだけです。→ 回答本文にも注記しました。
guest

0

###以下、2017/8/30大修正
暗号といってもいろいろ種類があります。例えば、公開鍵暗号と共通鍵暗号に大きく分かれます。また、用途も様々です。

セキュリティの世界の課題は単に規制をかければいいというものではありません。極論、データの漏洩や改竄防止だけに注力するならば、**「究極的には何もできない(漏洩や改竄を起こさない究極的な方法はデータを一切扱わないこと)」**となります。

要件を具体的に定めらければ暗号の良し悪しを定めることはできません。

投稿2017/08/29 12:48

編集2017/08/30 00:20
HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/29 23:37

不評というか、記述が間違っているからでは? > なぜならば、通信路上では復号の必要がありません。 通信経路上の「終端で復号」するため、経路上では復号は必要ないと言いたいのですかね?多分、何か伝えたい事がごっそり抜け落ちているのだと思うので、上記を見直してみては?
HogeAnimalLover

2017/08/29 23:47

ご指摘ありがとうございます。見直してみます。
退会済みユーザー

退会済みユーザー

2017/08/30 00:15

「究極的に何もしなければベスト」は「究極的に(対策を)何もしなければベスト」と文脈から読めてしまいます。 多分、言いたいことはそうではないと思うので、誤解を与えない書き方のほうが良いかと。
guest

0

1.現在使われている暗号化・復号化アルゴリズムは、どんなものが一番破られにくいのでしょうか?

いわゆる暗号化・復号化アルゴリズムとは厳密には異なるかもしれませんがワンタイムパッドという手法をとれば原理的には他者には解読不能です。
平文と同じ長さの鍵(乱数)を、通信する両者が事前に持っていないといけないので、現代のコンピュータ上では一般的には利用されていないと思いますが、人力だけでも運用できるので以前はスパイなどが実際に使っていたそうです。(昔読んだスパイ小説で初めて知りました)

投稿2017/08/30 04:59

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

###1に対する回答
暗号化、復号化に関する専門家ではないのでざっくりな回答になります。
暗号化復号化には様々は方式があります。
・その中で、すでに方式的に破る方法がある古いものがあるのでそれは除外すべきかと思います。
・暗号化は何か暗号鍵なるものが必要になります。この鍵の長さが短いと、すぐに破られる可能性があるため、出来るだけ長い方が良いとです。
・出来るだけ最新のバージョンのものを利用する。

###2に対する回答
暗号化、復号化に関する専門家ではないのでざっくりな回答になります。
通信内容の暗号化方式も様々な方法があり、httpsではサーバとクライアント間で、これからどのような方式でお互いにやりとりしましょうということを決めるためのネゴシエーション方式が決まっており、これによって動的に暗号化、復号化方式などが決定します。よって、どの方式で通信されているかはそのときにならないとわからないということになります。

投稿2017/08/30 00:10

kikukiku

総合スコア514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問