KEROPLOG

IT系サラリーマンの備忘録~情報処理・電子工作・車・ネットワークについて個人的なメモをネット上に残していくブログ

OpenSSLについて

f:id:keroro1114:20171122182013j:plain

OpenSSLの前提となるSSLについて

 

 

 

 

 

 

SSL(Secure Sockets Layer)/TLS(Transport Layer Security)は、インターネット上でデータを暗号化して送受信できるトランスポート層プロトコルのことです。
例えばクライアントとウェブサーバ間のHTTP(Hypertext Transfer Protocol)やFTP(File Transfer Protocol)などの通信において、SSL/TLSにより暗号化して安全にやりとりをすることができます。
サイトの所有者を証明や暗号化の役割をするSSLサーバ証明書があります。

 

f:id:ameiku2015:20151119010038p:plain

 

OpenSSLとは

OpenSSLは、上記SSL/TLS 暗号化プロトコルを利用するために必要な機能を提供するSSLツールキットです。OpenSSLを利用することにより、例えば、自分の開発したソフトウェアにSSL/TLSによる暗号化機能を組み込むことができる。OpenSSLは、米国の暗号モジュールを認可するために使用されるセキュリティ標準である「FIPS 140-2」に承認されたオープンソースプログラム(無償で公開しているプログラム)であり、様々なプログラミング言語やOS、暗号化アルゴリズムに対応しているため、プログラムに暗号化機能を組み込む手段として幅広く利用されている。

OpenSSLが対応している公開鍵暗号

暗号アルゴリズム公開鍵暗号の桁数が大きい数の素因数分解問題が現代の計算速度では困難であることを担保としているRSA暗号、DSA、などに対応していています。また、公開鍵の正当性を証明するための認証局 (CA: Certification Authority)やPKI(Public Key Infrastructure)を構築することもできます。

OpenSSLが対応している共通鍵暗号

共通鍵暗号方式は、「ブロック暗号方式」と「ストリーム暗号方式」の2つに分類できます。

・ストリーム暗号化方式は、もとの情報(クリアテキストと呼ばれる)を符号化したものを1文字ずつ変換していく 方式です。【例 abc →暗号化→bcd

・ブロック暗号化方式は、クリアテキストをある固定長のブロックごとに分けて暗号化を行います。 下に簡単な例を挙げます。【例(テキストを4文字ずつに分け、ブロックの1文字目と3文字目を交換する。【 abcdefghijkn→暗号化→cbadgfehkjin】