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

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

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

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

アーキテクチャ

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

ネットワーク

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

Q&A

解決済

3回答

35736閲覧

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

strike1217

総合スコア651

OS

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

アーキテクチャ

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

ネットワーク

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

0グッド

1クリップ

投稿2017/02/21 07:37

編集2017/02/21 10:26

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

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

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

#TLSは名前からしてトランスポート層に位置してそうですが、厳密にはどこの層に入るものなのでしょうか??
いろいろなサイトを見ていたんですが、
トランスポート層 or セッション層 or その間
が一番多かったのですが、、、、

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

C

1 // SSLの初期化 2SSL_library_init(); 3SSL_CTX* ctx = SSL_CTX_new( SSLv2_server_method() ); 4SSL* ssl = SSL_new( ctx ); 5SSL_set_fd( ssl, s ); 6 7SSL_use_certificate_file( ssl, "public.key", SSL_FILETYPE_PEM ); 8SSL_use_PrivateKey_file( ssl, "private.key", SSL_FILETYPE_PEM ); 9// 10SSL_accept(ssl); 11 12char msg[64]; 13SSL_read( ssl, msg, sizeof(msg) ); 14// 15SSL_shutdown(ssl); 16SSL_free(ssl); 17SSL_CTX_free(ctx);

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

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

[追記]

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

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

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

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

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

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

guest

回答3

0

実は、インターネットは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 08:39

編集2017/02/21 11:54
ikedas

総合スコア4443

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

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

strike1217

2017/02/21 10:21

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

2017/02/21 10:28

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

2017/02/21 11:47

おお! 確かに、TSLはハンドシェークとレコードから成るようですね。 「TLSは最上位のアプリケーション層に属する」 なるほどです! やはりmaisumakunさんと同じく、「正解は誰も決めていない」というのが正しいんですかね・・・
guest

0

ベストアンサー

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

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

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

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

投稿2017/02/21 11:44

編集2017/02/21 11:46
yuba

総合スコア5570

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

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

yuba

2017/02/21 11:47

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

2017/02/21 11:50

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

2017/02/21 11:52

確かに、これなら厳密にどちらの層と分けられるものでもなさそうですね・・・ あ 「アプリケーション層において実現された新たなトランスポート層である」 これだと基盤はアプリケーション層かもしれないですね。
yuba

2017/02/21 11:52

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

2017/02/21 11:53

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

2017/02/21 12:02

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

2017/02/21 12:21

SSLからTLSに名前が変わった理由もそういうことなんですかね・・・ SSL(セキュアなソケット・・・?)→TLS(トランスポートレイヤー・・・) https://docs.python.jp/3/library/ssl.html こちらのサイトでは、ソケットオブジェクトに対するラッパーという表現を使用しているみたいです。
yuba

2017/02/21 12:26

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

2017/02/21 12:28

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

2017/02/21 12:47 編集

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

0

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

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

投稿2017/02/21 08:02

編集2017/02/21 08:07
maisumakun

総合スコア145930

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

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

strike1217

2017/02/21 10:20

やはり、SSLとTLSは層はかわらないんですね! 少し追記いたします。 「QUIC」とても興味深いです。 これについて後ほど質問させてもらいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問