HTTPSについて
HTTPS
HTTP over Secure Socket Layer
Web上でよく使われるHTTPは以下の理由で脆弱である
盗聴の可能性
偽装の可能性
ちょうせい
これらのセキュリティ・ホールを解決してHTTPを使用するためにHTTPSが出現した.
HTTPS
Secure Socket Layer
HTTPSは、HTTPからTCPへの通信とは異なり、SSL(TLS)というセキュリティ層を介してTCPと通信する.この場合、SSLを使用して暗号化、証明書、安定性保護などの機能を提供し、使用することができます.
SSL (TLS)
SSLは開発後に標準化機構IETFの管理に発展しTLSに改称した.
TLS 1.0はSSL 3.0を継承している.
しかし、TLSよりSSLという名前が多く使われています.
SSLの動作手順を理解する前に、対称鍵と公開鍵を理解する必要がある.
たいしょうキー
暗号化する任意のデータまたはドキュメントについて、暗号化鍵は復号鍵と同じ方法で対称鍵(共通鍵)と呼ばれます.
次の例を示します.
#텍스트 내용이 "Hello, Royce"인 `beforeEnc.txt`파일을 생성하고,
echo 'Hello, Royce' > beforeEnc.txt;
#-des3방식으로 beforeEnc.txt파일을 암호화 한 뒤 afterEnc.bin으로 생성
openssl enc -e -des3 -salt -in beforeEnc.txt -out afterEnc.bin;
この場合、暗号化を実行する手順で鍵を設定する必要があります.#확인
cat afterEnc.bin
#Salted__OOy /��t��
# �P)���~�%
暗号化がうまく行われていることがわかります.暗号化された
afterEnc.bin
を復号する場合は、暗号化フェーズで同じ鍵を入力して復号できます.#afterEnc.bin 복호화
openssl enc -d -des3 -in afterEnc.bin -out afterDec.txt;
cat afterDec.txt
#Hello, Royce
この暗号化鍵は復号鍵と同じ方法で対称鍵と呼ばれていますただし、ここでの問題は、復号化されたオブジェクトに鍵がない場合、その鍵を送信する必要があるが、その鍵は暗号化されていないことである.HTTPで通信すると、暗号化要求後に要求を受けたサーバに対応する鍵がなく、同時に鍵を送信して復号すると、復号鍵が露出する可能性がある.
これらの問題を解決するために,公開鍵方式が現れた.
公開鍵
公開鍵方式は、暗号化対象に1つの鍵しかない対称鍵とは異なり、2つの鍵がある.公開鍵と非公開鍵(秘密鍵)を有し、公開鍵は他の誰にでも提供することができる.
公開鍵で暗号化し,公開鍵で復号する.鍵を転送する必要がないので、この方法は安全です.秘密鍵を露出しない限り.
公開鍵/秘密鍵の作成
#private.pem이라는 비공개키를 생성(1024bit)
openssl genrsa -out private.pem 1024;
#비공개키에 대한 공개키 생성
openssl rsa -in private.pem -out public.pem -outform PEM -pubout;
公開鍵による暗号化
echo 'Hello, Royce' > beforePem.txt
#beforePem.txt를 생성한 공개키로 암호화
openssl rsautl -encrypt -inkey public.pem -pubin -in beforePem.txt -out afterEnc.ssl;
cat afterEnc.ssl;
#ɖo�~�g�>��f�Y�V?]ؤ�G��mZ�
# `�M-:ա�YY�]��4ӵ~�{�����+M�����9)�O���AQǃ�pvl��9�ٿ�|h��8�YO`�U0��g_h+9T�Qe&%
復号by秘密鍵
#비공개키로 복호화
openssl rsautl -decrypt -inkey private.pem -in afterEnc.ssl -out decrypted.txt
cat decrypted.txt
#Hello, Royce
非対称鍵を使用すると、通信をより安全に暗号化できるように見えるが、対称鍵よりも遅く、計算負荷が高いという欠点がある.対称キーと非対称キーを混ぜて使うのが適当だという.
もう1つの欠点はCAの出現であり,暗号化された公開鍵が本当かどうかを証明することは困難である.秘密鍵ではなく公開鍵を使用して暗号化し、秘密鍵を持つサーバにいつでも復号要求を送信することもできます.
ということでCA登場
CA
Certificate Authority
前述の公開鍵の問題を解決するには、次の役割が必要です.
厳格な審査を受けた認証機関(CA)が担当する.
認証機関の使用手順
まずサーバ公開鍵をサーバが使用するCAに提出する.
CAは、サーバの公開鍵を暗号化し、証明書とともにサーバに送信する.
これで、暗号化(by CAの秘密鍵)サーバ公開鍵を含む証明書が要求されたクライアントに送信されます.
証明書を受け取ったクライアントは、インストールされたCAの公開鍵を使用してサーバの公開鍵を復号します.
通信による受信のリスクが高いため、ブラウザ(クライアント)は通常、主なCAの公開鍵を予め内蔵しておく.
SSL HandShakeとは?
HTTPSで通信するために、
클라이언트 - 서버
は、以下の악수(HandShake)
のプロセスを経るであろう.Client Hello 메세지(랜덤 메세지)
をサーバに送信し、SSL通信を開始する.Server Hello 메세지(랜덤 메세지)
に応答してサーバに通信可能であることを通知し、サーバは証明書をクライアントに送信する.Client Hello(랜덤 메세지)
と、サーバから応答されたSever Hello(랜덤 메세지)
とを組み合わせてPre-Master-Secret-Key
を作成する.(
Pre-Master-Secret-Key
は、クライアントとサーバの間で使用される共通鍵です.)Pre-Master Secret Key
を暗号化し、サーバに送信する.Pre-Master-Secret-Key
を復号する.Pre-Master-Secret-Key
であり、공통키
と呼ばれるため、以降の通信は대칭키(공통키)
方式で通信することができる.Reference
この問題について(HTTPSについて), 我々は、より多くの情報をここで見つけました https://velog.io/@roycewon/HTTPS에-관하여テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol