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

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

ただいまの
回答率

90.53%

  • ネットワーク

    628questions

    ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

  • OS

    232questions

    OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

  • アーキテクチャ

    89questions

    アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

SSL/TLSは第何層でしょうか??

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 5,717

strike1217

score 568

 SSL/TLSは何層?
というサイトにこういう質問があります。

「https://...」による暗号化通信を実現しているのは,SSL/TLSである.これは,HTTPなどより下位の____に位置し,暗号通信の枠組を提供する.

一応回答が載っているのですが、通常ならこれどう回答しますか??
このサイトの結論はよくわかりませんが、

TLSは名前からしてトランスポート層に位置してそうですが、厳密にはどこの層に入るものなのでしょうか??

いろいろなサイトを見ていたんですが、
トランスポート層 or セッション層 or その間
が一番多かったのですが、、、、

最初は、C言語でOpenSSLを実装したコードを見ると、socket(セッション層)を作った後なので、トランスポートとセッションの間だと思っていたんですが、なんだか違うような気がしてきました。

 // SSLの初期化 
SSL_library_init(); 
SSL_CTX* ctx = SSL_CTX_new( SSLv2_server_method() ); 
SSL* ssl = SSL_new( ctx ); 
SSL_set_fd( ssl, s ); 

SSL_use_certificate_file( ssl, "public.key", SSL_FILETYPE_PEM ); 
SSL_use_PrivateKey_file( ssl, "private.key", SSL_FILETYPE_PEM ); 
//
SSL_accept(ssl); 

char msg[64]; 
SSL_read( ssl, msg, sizeof(msg) ); 
//
SSL_shutdown(ssl); 
SSL_free(ssl); 
SSL_CTX_free(ctx);


iso参照モデルの各層には入らない、「その間」などという表現は正しいのでしょうか??
もしかして、正確にはSSLとTLSは層が違うかも?? → だからSSL/TLSはあやふや? と思いましたが・・・

分かる方、教えてください。

[追記]

maisumakunさんとikedasさんの回答を参考に追記します。
お2人とも「ISO参照モデルが現在主流のTCP/IPのモデルとは厳密には対応していない」ということをおっしゃっております。
では、SSL/TSLは、「TCP/IPの現在のモデル」ではアプリケーション層、トランスポート層、またはその間、
となりそうですが、どうでしょう?
こちらも「正確にはどの層とも言えない」のでしょうか??

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+7

実は、インターネットはOSIの7階層モデルに準拠していませんRFC 1122で定義しているのは、次のような4層モデルです。

  • アプリケーション層 (いろいろなサービスのプロトコル)。
  • トランスポート層 (TCP、UDPなど)。
  • インターネット層 (IP、ICMP、IPv6など)。
  • リンク層 (ARP、PPPなど)。

OSIで言うと、「アプリケーション層」はだいたいセッション層から上 (5-7層) に、「インターネット層」はネットワーク層 (第3層) に、「リンク層」はデータリンク層 (第2層) に対応しているという意見もあります (他にも諸説あります)。物理層 (第1層) にあたるものは、「リンク層」に含まれていると言う人もいますし、インターネットでは物理層は特に定義されていないと言う人もいます。しかしこういった議論は純粋に理論上の考察にすぎず、本当は、インターネットとOSI参照モデルは関係ないというのが正しいです。

ウィキペディアの「TCP/IP参照モデル」の記事では、次のようにまとめています。

これまでIETFはインターネット・プロトコル・スタックを RFC 1122 で定義された4層から変更した事はない。IETFは7層からなるOSI参照モデルに従うような試みはせず、また標準化過程 (Standards Track) にあるプロトコル仕様やその他の構造上の文書をOSI参照モデルに対して参照する事もしない。

HTTPも、DHCP、DNSなども、インターネットでは全部「アプリケーション層」に含まれます。SSL/TLSもアプリケーション層にありますが、その中でHTTPなどの他のプロトコルよりは下の層に位置しています。OSIほど層が細かく区別されてはいません。

ですから、質問の正解は「層」でしょう。それ以外の答えはすべて不正解だと思います。

ただ、多くの教科書などでは、インターネットのプロトコルをOSIの7階層に対応づけて説明しようとしますね。厳密さを求めた結果としてそうなっているのでしょうが、あくまでも参考程度に見ておけばいいです。


コメントのご指摘を受けて、あらためてRFCを読み直してみました。

※なお、以下で「アプリケーション層」「トランスポート層」という用語は、OSIモデルの意味ではなくインターネットでの意味で使われています。

(...) The protocol is composed of two layers: the TLS Record Protocol and the TLS Handshake Protocol.  At the lowest level, layered on top of some reliable transport protocol (e.g., TCP [TCP]), is the TLS Record Protocol. (...)
(...)
The TLS Record Protocol is used for encapsulation of various higher-level protocols.  One such encapsulated protocol, the TLS Handshake Protocol, allows the server and client to authenticate each other and to negotiate an encryption algorithm and cryptographic keys before the application protocol transmits or receives its first byte of data. (...)

-- RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2.  §1. Introduction.

(試訳)

(…) このプロトコル〔TLS 1.2〕は二つの層から成る。TLSレコード・プロトコルとTLSハンドシェーク・プロトコルである。最下部は、何らかの適切なトランスポート〔層〕プロトコル (例えばTCP/IP) の上の層である、TLSレコード・プロトコルである。(…)
(…)
TLSレコード・プロトコルは、様々な上位レベルのプロトコルをカプセル化する。そのようなプロトコルの一つ、TLSハンドシェーク・プロトコルは、アプリケーション〔層〕プロトコルがデータの最初のバイトを送信または受信をする前に、サーバとクライアントが互いを認証できるように、また暗号化アルゴリズムと暗号鍵の折衝をできるようにする。(…)

つまり、上から

  • アプリケーション層
  • TLSハンドシェーク・プロトコル
  • TLSレコード・プロトコル
  • トランスポート層

というふうに重なっています。そして、TLSレコード・プロトコルは「適切なトランスポート〔層〕プロトコル (例えばTCP/IP) の上の層」だと言っているので、TLSは最上位のアプリケーション層に属するように思います。

あるいは、アプリケーション層にもトランスポート層にも属さないかです。TLSの次のバージョンであるTLS 1.3のドラフトでは、「何らかの適切なトランスポート〔層〕プロトコル (例えばTCP/IP) の上の層」といった表現がなくなっています。一方で、「TLSはアプリケーション〔層〕プロトコルとは独立している」(TLS is application protocol independent) という表現は1.2のまま残っています (draft-ietf-tls-tls13-18)。つまり、もともと他のプロトコルから独立しているので、どちらに属するかを考えても意味がない、ということなのかもしれません。


長くてすみません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/21 19:21

    ありがとうございます。
    少し追記いたします。

    キャンセル

  • 2017/02/21 19:28

    「SSL/TLSもアプリケーション層にあります」

    SSL/TLSがトランスポート層にあるという説もあるんですが、、、実際にはどうなんでしょうか?

    キャンセル

  • 2017/02/21 20:47

    おお!
    確かに、TSLはハンドシェークとレコードから成るようですね。

    「TLSは最上位のアプリケーション層に属する」
    なるほどです!

    やはりmaisumakunさんと同じく、「正解は誰も決めていない」というのが正しいんですかね・・・

    キャンセル

checkベストアンサー

+5

「SSL/TLSもアプリケーション層にあります」
SSL/TLSがトランスポート層にあるという説もあるんですが、、、実際にはどうなんでしょうか?

ここ、結構TLS核心を突いています。

「アプリケーション層において実現された新たなトランスポート層である」と理解するといいかと思います。新たなトランスポート層だからその上にまたアプリケーション層を重ねられます。

HTTPというアプリケーションをTLSの上にも重ねる(あわせてHTTPSですね)ことができる、HTTPに限らずIMAPだってFTPだってなんだって。この柔軟性を実現しているのが、「アプリケーション層において実現された新たなトランスポート層である」という特徴です。「Layer」という言葉がまさにこの強力さを表しています。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/21 20:47

    HTTP on TLS on TLS on TLS on TLS なんてのもやろうと思えば可能なんですよね。HTTPSSSSとでも呼びますか。

    キャンセル

  • 2017/02/21 20:50

    ほえええ
    「アプリケーション層において実現された新たなトランスポート層である」
    面白いです。初めて聞きました。

    トランスポート層とアプリケーション層が重なっているんですね!!

    キャンセル

  • 2017/02/21 20:52

    確かに、これなら厳密にどちらの層と分けられるものでもなさそうですね・・・


    「アプリケーション層において実現された新たなトランスポート層である」
    これだと基盤はアプリケーション層かもしれないですね。

    キャンセル

  • 2017/02/21 20:52

    でも考えてみると珍しくないことですよ。
    仮想マシンは、ホストOSから見ればアプリケーションですが、ゲストOSから見ればハードウェアです。
    これも、上位層で新たな下位層を実現している例ですよね

    キャンセル

  • 2017/02/21 20:53

    あああ~~
    わかりやすい例ですね!

    キャンセル

  • 2017/02/21 21:02

    「アプリケーション層において実現された新たなトランスポート層である」。
    たしかに。

    キャンセル

  • 2017/02/21 21:21

    SSLからTLSに名前が変わった理由もそういうことなんですかね・・・

    SSL(セキュアなソケット・・・?)→TLS(トランスポートレイヤー・・・)

    https://docs.python.jp/3/library/ssl.html
    こちらのサイトでは、ソケットオブジェクトに対するラッパーという表現を使用しているみたいです。

    キャンセル

  • 2017/02/21 21:26

    名前が変わった理由についてはちょっとわかんないです。なんで変えたんですかね。正確さから言えば、保護されたトランスポート層ってことでTLSの方がそりゃ正しいですけど。

    ソケットはトランスポート層そのものではなく、TCP通信をプラグラミングするためにOSに用意されたプログラミングインターフェースのことです。UNIXにもWindowsにもあります。トランスポート層を新たに生み出すTLSをプラグラミング言語から見ると、ソケットをラップしたソケットみたいなインターフェースということになりますが、通信端末がUNIXやWindowsである必然性はないのでソケットという一部OS限定な呼び方はやはり不正確と言えば不正確。

    キャンセル

  • 2017/02/21 21:28

    「ソケットという一部OS限定な呼び方はやはり不正確と言えば不正確。」
    そうですか。
    ありがとうごいます。

    キャンセル

  • 2017/02/21 21:46 編集

    ベストアンサーに迷いましたが、選ばせてもらいますね。
    ikedasさんとmaisumakunさんには+評価を入れておきます。

    キャンセル

+5

以前に関連する質問へコメントしたのですが、OSI参照モデルはあくまで「OSIという通信プロトコルのために」制定されたものなので、そうでないTCP/IPとは厳密に対応するものではありませんし、IETFも「OSIモデルに則ることは考えていない」としています。「正解は誰も決めていない」というのが正しいところです。

なお、SSLとTLSはSSL 3.0→TLS 1.0→TLS 1.1というようにバージョンが進む間に名前が変わっただけなので、レイヤとしての本質は何も変わりません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/21 19:20

    やはり、SSLとTLSは層はかわらないんですね!
    少し追記いたします。

    「QUIC」とても興味深いです。
    これについて後ほど質問させてもらいます。

    キャンセル

同じタグがついた質問を見る

  • ネットワーク

    628questions

    ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

  • OS

    232questions

    OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

  • アーキテクチャ

    89questions

    アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます