• 投稿日
  • VNCの通信を暗号化できるサーバーとクライアントの組み合わせと、利用すると便利なSORACOMサービス

    こんにちは、ソラコムのテクノロジー・エバンジェリスト 松下(ニックネーム: Max)です。

    ここでは、パソコンの遠隔操作でよく使われるVNC(Virtual Network Computing)について、通信が暗号化される組み合わせについて解説します。VNCによる遠隔操作を行っている、もしくはこれから導入しようと検討している方に役立つかと思います。

    遠隔操作とVNC

    IoTのよくある用途に、通信を利用して遠くに離れた場所の機器を操作する「遠隔操作」があります。

    現場の機器制御にパソコンが用いられる事は多いと思いますが、このパソコンを遠隔から操作する方法の1つに「リモートデスクトップ機能」があります。リモートデスクトップとは、遠隔地のパソコンの画面を手元で表示・操作できる仕組みで、SORACOMでも良くお問い合わせいただくIoT活用方法の1つとなっています。

    リモートデスクトップ機能の概要
    遠隔地のWindowsパソコンの画面を、手元のWindowsパソコンで表示している様子

    リモートデスクトップを実現するソフトにはいくつか種類がありますが、中でもVNCは1999年の登場以来、そのシンプルな実装を背景に多くの派生ソフトウェア(実装)が生まれ、様々な場所で利用されています。

    VNCとは?

    VNCについて検索してみると「~~ VNC」といった名称をいくつか見つけることができます。これらはすべて “VNC” です。これだけ多くの実装が存在する “VNC” とは何なのでしょうか?

    VNCとはVirtual Network Computingの略で、RFB(Remote FrameBuffer)というプロトコルを用いて、画面やキーボード/マウスといった入出力をネットワーク越しに送受信するソフトウェアの総称であり、~~VNCというのは個々の製品名となります。本ブログでも “VNC” はソフトウェアの総称として使っていきます。

    VNCの活用例は、IoTのシステム構築をレシピとして紹介しているSORACOM IoT DIY レシピの中の「外出先から安全にリモートデスクトップへアクセス」をご覧いただくと、利用のイメージができるのではないかと思います。

    今すぐ使えるVNC実装

    ここでは、今すぐ使えるVNCの実装について紹介します。派生ソフトウェアを一覧したい方はWikipediaをご覧ください。

    • RealVNC
      • 1999年に登場した「オリジナルのVNC(ソフトウェア名としてのVNC)」の後継ソフトウェアです。
        RealVNCになってからは、有償ソフトウェアとして販売もしています。動作環境はWindows、macOS、Linux等サポートしています。Raspberry Pi OS(GUI)に標準同梱されており、この場合に限っては非営利において無料で使えるライセンスとなっています。
    • TigerVNC
      • オリジナルのVNCから派生したTightVNC派生ソフトウェアです(オリジナルのVNCから見ると孫です)。
        TightVNCがRFBの改善を行い、TigerVNCではTLS(Transport Layer Security)よる暗号化といったセキュリティの強化が行われています。Windows、macOS、Linux等の環境で動作し、Fedoraでは標準のVNCとなっています。ライセンスはGPL-2.0です。
    • macOSの「画面共有」
      • macOSの「画面共有」機能はVNCで実現されています。

    VNCの進化と暗号化通信

    VNCは主に2つの方面でアップデートされてきました。1つ目がRFBの改善で、画面変更時の応答性能を向上したり、通信の効率化です。2つ目がセキュリティの向上で、接続時の認証と通信内容の暗号化が主な内容です。

    VNCで使われているプロトコル “RFB” には多くのバージョンが存在しており、接続性を優先してセキュリティが低下した状態、具体的に言えば暗号化せずに通信しているケースがあります。

    そのため、安心してVNCを利用するために、組み合わせによる暗号化通信の有無を解説していきます。

    VNCの通信が暗号化される組み合わせ

    結論から言うと「同じVNC実装(ソフトウェアプロダクト)どうしで通信」が、確実に暗号化される組み合わせとなります。接続先のサーバーでRealVNCが動いているなら、クライアントからはRealVNC Viewerでつなげましょう。
    また異なるVNC実装間においては、通信は可能ですが暗号化されないことがほとんどですので、利用には注意が必要です。

    ここからは、VNC接続を待ち受けるOS毎に解説します。

    Raspberry Pi OS (RealVNC) との通信を暗号化するには?

    Raspberry Pi OSに標準で添付されているRealVNCとの通信について、VNCクライアント別にまとめました。

    VNCクライアント通信の暗号化追加の設定
    RealVNC Viewer暗号化される不要
    上記以外のVNCクライアント暗号化されない接続を受け付ける側のRaspberry Pi OS上で「Authentication = “VNC password”」を設定
    Raspberry Pi OS (RealVNC) との接続状況

    Raspberry Pi OS内のRealVNCは、インストール直後は動作していません。RealVNCを有効化する方法はこちらをご覧ください。

    他のVNCクライアントから接続するための設定「Authentication = “VNC password”」の影響

    RealVNC Viewer以外のVNCクライアントから接続すると “No matching security types” と表示され、接続に失敗します。Raspberry Pi OS側のRealVNC上で「Authentication を “VNC password” に変更する」という設定を行うと接続できるようにはなりますが、通信は暗号化されません。

    macOS (画面共有) との通信を暗号化するには?

    macOSの画面共有との通信について、VNCクライアント別にまとめました。

    VNCクライアント通信の暗号化追加の設定
    macOSのVNCクライアント暗号化される不要
    RealVNC Viewer暗号化されない不要
    上記以外のVNCクライアント暗号化されない接続を受け付ける側のmacOS上で「VNC使用者が画面を操作することを許可」を有効化
    macOS「画面共有」との接続状況

    macOSの「画面共有」を有効化する方法、ならびに他のmacOSからVNCクライアント機能を利用して接続する方法はこちらをご覧ください。
    “別のMacと画面共有セッションを開始する” の中の1が有効化の方法、2が接続する方法です。

    他のVNCクライアントから接続するための設定 「VNC使用者が画面を操作することを許可 」の影響

    macOSのVNCクライアント、もしくはRealVNC Viewer以外のVNCクライアントから接続すると “No matching security types” と表示され、接続に失敗します。接続を受け付ける側のmacOSで「VNC使用者が画面を操作することを許可」を有効化すると接続できるようにはなりますが、通信は暗号化されません。(Appleのページにも記載があります)

    また、RealVNC Viewerは「VNC使用者が画面を操作することを許可」を設定しなくても接続できますが、やはり通信は暗号化されませんのでご注意ください。

    WindowsパソコンをVNCで安全に操作するには?

    WindowsにはVNC機能が標準で備わっていません。そのため、別途ソフトウェアを導入します。Windowsで手軽に使えるVNC実装としてはTigerVNCが良いでしょう。

    以下はTigerVNCを対象とした場合の結果です。

    VNCクライアント通信の暗号化追加の設定
    TigerVNC viewer暗号化される不要
    上記以外のVNCクライアント 暗号化されない不要
    TigerVNCとの接続状況

    TigerVNCは初期設定がRealVNCにおける「Authentication = “VNC password”」となっているため、接続に失敗するということがありませんが、暗号化はされないため注意が必要です。

    WindowsはPro以上であれば、RDP(Remote Desktop Protocol)を利用した、VNCとは別のリモートデスクトップ機能が標準で利用可能です。そちらも検討できます。

    まとめ ~ VNCを活用するための通信の準備

    VNCのソフトウェア組み合わせによる暗号化の有無について解説しました。改めて結論を共有すると「同じVNC実装(ソフトウェアプロダクト)どうしで通信する」が、確実に暗号化される組み合わせです。

    さて、実際に活用するとなると、VNCの導入だけでなく通信回線の準備も必要です。
    スマートフォンで使われているLTE/5Gを用いたIoT向けデータ通信「SORACOM Air」と、SORACOM Airでつながっている機器に安全にリモートアクセスできる「SORACOM Napter」を組み合わせたり、また、Wi-Fiや有線通信といったIPネットワークからSORACOMに接続できる「SORACOM Arc (アーク)」とSORACOM Napterを連携することで、どのような現場に置かれたパソコンでもVNCで遠隔操作ができるようになります。

    recipe-overview
    IoTデータ通信サービス「SORACOM Air」とオンデマンド リモートアクセスサービス「SORACOM Napter」を組み合わせた、VNCによる遠隔操作の構成例 ― IoT DIY レシピ 「外出先から安全にリモートデスクトップへアクセス」より

    冒頭でもご紹介したIoT DIY レシピ 「外出先から安全にリモートデスクトップへアクセス」 などをご覧いただき、便利に、そして安全に遠隔操作を活用いただければと思います!

    本記事における技術的な調査結果は、“VNC password” を設定すると通信が平文になるから、注意して使おうというブログに別途まとめました。こちらも併せてご覧ください。

    ― ソラコム “Max” 松下享平 / Twitterやってます(@ma2shita)