プライマリアカウント番号(PAN)を保存する際のPCI DSS要件対応方法について

仕事でPCI DSSに対応しなくちゃいけなくて、少しづつ読み進めてる。

今回はプライマリアカウント番号(Primary Account Number →PAN)について

 

プライマリアカウント番号は、カード番号や、顧客番号など

カード会員を一意に特定できる番号のこと。

 

==PCI DSS要件3.4==

以下のいずれかの手法を使用して、すべての保存場所で PAN を少なくとも読み取り不能にする (ポータブルデジタルメディア、バックアップメディア、ログを含む)。

・ 強力な暗号化技術をベースにしたワンウェイハッシュ(PAN 全体をハッシュする必要がある)

・ トランケーション(PAN の切り捨てられたセグメントの置き換えにはハッシュを使用できない)

・ インデックストークンとパッド(パッドは安全に保存する必要がある)

・ 関連する鍵管理プロセスおよび手順を伴う、強力な暗号化

 

:悪意のある個人がトランケーションされたPANとハッシュ化されたPANの両方を取得した場合、 元のPANを容易に再現することができます。 ハッシュ化およびトランケーションされた PAN の同じバージョンが事業体の環境に存在する場合、 元の PAN を再構築するために、ハッシュ化およびトランケーションされたバージョンを 関連付けることはできないことを確実にする追加コントロールを導入する必要があります。

 

カード会員データはできる限り保存しないことが望ましく、 どうしても保存しなくてはいけないときには、判読可能な状態で保存しなければならない。 判読可能な状態で保存する一つの方法として、ワンウエイハッシュ機能で行う。

 

ワンウェイハッシュとは、入力値をハッシュ化するが、元に戻すことができない。

 

MacにDockerをインストールする

1.公式サイトからDocker for Macをダウンロード
 
2.ダウンロード後、dmgファイルからMacにインストール
 
3.Launchpadからdocker.appを起動後、Terminalでコマンド実行して、起動を確認
$docker version
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:09 2017
 OS/Arch:      darwin/amd64
 
Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: true
 
4.nginxを起動してみる
$docker run -d -p 80:80 --name {コンテナ名} nginx
 
実行するとnginxを80番ポートで起動してくれる。
docker imageがローカルで見つからない場合は、Docker Hubからpullしてくれる。すごい。
 
でも、無事、起動・・・とならず。
xternal connectivity on endpoint webserver (aa2e4e49cb725d51963f2519be7f08ee8839fce72075f4a285a0c0ea9b4cbd9b): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)
 
 80番ポートがすでに使われているっぽい。
 
lsofコマンドで80番ポートを使っているプロセスを調べる
$sudo lsof -i -P | grep “LISTEN"
Apacheが何故か起動していたため、止まっていた。
$sudo apachectl stop
再度Dockerを起動
$docker container start webserver
 
無事起動!
 
 
コマンドまとめ
 
イメージのインストール&起動コマンド
docker run -d -p 80:80 --name {コンテナ名} {イメージ名}
※{イメージ名}・・・nginx
 
コンテナの起動コマンド
docker container start {コンテナ名}
 
コンテナの停止コマンド
docker container stop {コンテナ名}
 
コンテナの状態確認(起動しているコンテナのみ)
docker container ls
 
●コンテナの状態確認(起動していないコンテナ含む)
docker container ls -a
 
●コンテナの削除
docker container rm {コンテナ名}
 
●イメージの削除
docker image rm {ID もしくはイメージ名}
 
 

Software Designの「ITエンジニアと数学特集」で数学を理解してみる

 Software DesignのITエンジニアと数学特集で数学を理解してみる。

 

第2限目の数式が怖いならコードで理解を見てるけど、

Pythonのプログラムが読めないと難しい。

 

zip関数とか、lambdaとか検索したら分かるけど。。。。

いちいちつまづいちゃうなあ。。

 

実行しながら理解を進めてみよう。

 

ソフトウェアデザイン 2017年 12 月号 [雑誌]
 

 

PCIDSSのインフラ要件についてまとめる

本日はPCIDSSのインフラ要件についてサイトをめぐって調べた。
 
 ■LANのセキュリティ対策
  LANについては、伝送経路における情報漏えいについて、
     特にパスワードの漏えいに注意しなければならない。
 
  →そのため、すべてのシステムコンポーネント上で伝送と保管の処理に
       おいて、強度の高い暗号を用いて、すべてのパスワードを
       判読不可能にすることが求められている。
 
  例)たとえば、SSLアクセラレータを採用している場合には、
            LAN上におけるWebサーバとの間において、
            パスワードが平文伝送する可能性がある。
 
            ※SSLアクセラレータとは、SSL通信に必要となる暗号化
    複合の処理を、専用ハードディスクによって高速化すること。
 
    クライアント           →SSLアクセラレータ  通信プロトコル:HTTPS
               SSLアクセラレータ→Webサーバ                通信プロトコル:HTTP
               となるため、HTTP通信部分ではパスワードが平文になる。
 
 
   ■セキュリティゲートウェイ
  ファイアウォールの導入。
  セキュリティゲートウェイとしたのは、
  ルータでフィルタリング機能で実現する場合があるため。
  
  ファイアウォールの設定の要件
  ・DMZの導入
  ・DMZへのトラフィック制限
  ・インターネットと内部ネットワークの直接接続の禁止
  ・アウトバウンドトラフィックの制限
  ・インバウンドトラフィックの制限
  ・動的パケットフィルタリングの採用
  ・アドレス変換(NAT、PAT)の実装
            →内部アドレスが書き換えられたり、
     インターネット上で露出することを防止するため、
 
 アウトバウンドトラフィック・・・ネットワーク外に出ていく情報(量)
    インバウンドトラフィック・・・ネットワークの外から中に入っている情報(量)