データ保護サンプル CoSort SortCL Job Samples:
証券会社での利用例――SortCLによるフィールドレベルの個人データ保護
この例では、暗号化、偽名化、非識別化による個人データフィールドの保護と、 元データフィールドの復元を行っています。
さらに、次の処理も同時に行っています。
- 会社コードでのソートとジョイン
- フィールドの再マッピング
- 条件による行のクロス計算
- 集計と整順化
入力ファイルがどのようにして同時的に変換されるのかに注目してください。
1. 個人データフィールドの保護(暗号化、偽名化、非識別化)
入力ファイル1:tousyo-a (1行目の見出し行を除くタブ区切りファイルを入力ファイルとする。)
会社名 | 会社コード | 終値 | 出来高 | 前日比 | % |
---|---|---|---|---|---|
極洋 | 1301 | 217 | 201000 | 1 | 0.46 |
ニチロ | 1331 | - | 0 | - | - |
日本水産 | 1332 | 647 | 2277300 | -7 | -1.07 |
マルハグループ本社 | 1334 | 191 | 2205000 | 1 | 0.53 |
ホウスイ | 1352 | 160 | 12000 | 0 | 0 |
サカタのタネ | 1377 | 1552 | 35000 | 6 | 0.39 |
ホクト | 1379 | 1889 | 117800 | -22 | -1.15 |
住友石炭鉱業 | 1503 | 115 | 6342000 | 2 | 1.77 |
日鉄鉱業 | 1515 | 927 | 173000 | 10 | 1.09 |
三井松島産業 | 1518 | 183 | 783000 | 1 | 0.55 |
関東天然瓦斯開発 | 1661 | 737 | 88000 | 10 | 1.38 |
石油資源開発 | 1662 | 8060 | 100500 | 91 | 1.13 |
ハザマ | 1719 | 137 | 107800 | 1 | 0.74 |
東急建設 | 1720 | 597 | 233680 | 13 | 2.23 |
コムシスホールディングス | 1721 | 1249 | 855000 | -19 | -1.5 |
ミサワホームホールディングス | 1722 | 1164 | 286500 | 4 | 0.34 |
高松建設 | 1762 | 1545 | 6600 | 4 | 0.26 |
東建コーポレーション | 1766 | 5840 | 46900 | -60 | -1.02 |
ヤマウラ | 1780 | 340 | 6500 | 8 | 2.41 |
オリエンタル建設 | 1786 | 332 | 25000 | 5 | 1.53 |
みらい建設グループ | 1792 | 11 | 6055000 | 0 | 0 |
大成建設 | 1801 | 336 | 4736000 | -4 | -1.18 |
大林組 | 1802 | 567 | 5495000 | 6 | 1.07 |
清水建設 | 1803 | 600 | 4247000 | 5 | 0.84 |
飛島建設 | 1805 | 60 | 3803000 | -1 | -1.64 |
長谷工コーポレーション | 1808 | 291 | 13183500 | -3 | -1.02 |
松井建設 | 1810 | 510 | 12000 | 4 | 0.79 |
鹿島 | 1812 | 393 | 6261000 | 1 | 0.26 |
不動建設 | 1813 | 178 | 24942500 | 20 | 11.25 |
大末建設 | 1814 | 82 | 153000 | 0 | 0 |
鉄建 | 1815 | 178 | 98000 | 0 | 0 |
安藤建設 | 1816 | 202 | 27000 | -1 | -0.49 |
太平工業 | 1819 | 671 | 248000 | -6 | -0.89 |
西松建設 | 1820 | 356 | 1817000 | -3 | -0.84 |
三井住友建設 | 1821 | 198 | 205300 | 1 | 0.51 |
大豊建設 | 1822 | 188 | 77000 | 0 | 0 |
前田建設工業 | 1824 | 422 | 1397000 | -1 | -0.24 |
佐田建設 | 1826 | 134 | 91000 | -1 | -0.74 |
ナカノフドー建設 | 1827 | 305 | 34500 | -1 | -0.33 |
奥村組 | 1833 | 588 | 1115000 | -1 | -0.17 |
小田急建設 | 1834 | 268 | 2500 | 1 | 0.37 |
東鉄工業 | 1835 | 736 | 24000 | -13 | -1.74 |
真柄建設 | 1839 | 166 | 129000 | 0 | 0 |
イチケン | 1847 | 299 | 79000 | -1 | -0.33 |
淺沼組 | 1852 | 181 | 25000 | 0 | 0 |
入力ファイル2:buys (1行目の見出し行を除く固定長ファイルを入力ファイルとする。氏名は漢字スペースで5文字に統一する。)
株数 | 会社コード | 個人コード | 氏名 |
---|---|---|---|
1000 | 1301 | 365-57-7505 | 吉田茂 |
950 | 1503 | 762-25-9601 | 片山哲 |
25000 | 1623 | 128-61-1131 | 芦田均 |
3250 | 1426 | 129-69-2156 | 鳩山一郎 |
775 | 1563 | 108-46-1219 | 石橋湛山 |
400 | 1766 | 562-21-6485 | 岸信介 |
2100 | 1518 | 578-52-7911 | 池田勇人 |
950 | 1801 | 467-12-5544 | 佐藤榮作 |
1500 | 1662 | 617-51-7283 | 田中角榮 |
5000 | 1815 | 583-14-2464 | 三木武夫 |
3333 | 1852 | 449-30-6343 | 福田赳夫 |
2000 | 1802 | 765-85-6704 | 大平正芳 |
8500 | 1315 | 311-23-8269 | 鈴木善幸 |
1000 | 1503 | 533-97-5223 | 中曽根康弘 |
4300 | 1515 | 601-13-7610 | 竹下登 |
9000 | 1379 | 270-71-5951 | 宇野宗佑 |
3500 | 1821 | 254-66-0751 | 海部俊樹 |
825 | 1334 | 373-37-4567 | 宮澤喜一 |
9000 | 1834 | 259-21-9896 | 細川護煕 |
855 | 1736 | 377-63-7162 | 羽田孜 |
50 | 1806 | 474-82-4342 | 村山富市 |
90 | 1808 | 277-76-0741 | 橋本龍太郎 |
偽名化セットファイル:pseudo.set
吉田茂 |
宇喜多直家 |
片山哲 |
伊達政宗 |
芦田均 |
井伊直政 |
鳩山一郎 |
小早川隆景 |
石橋湛山 |
武田信玄 |
岸信介 |
島津貴久 |
池田勇人 |
南部晴政 |
佐藤榮作 |
南部信直 |
田中角榮 |
蠣崎季広 |
三木武夫 |
河尻秀隆 |
福田赳夫 |
尼子経久 |
大平正芳 |
馬場信春 |
鈴木善幸 |
井伊直虎 |
中曽根康弘 |
中村一氏 |
竹下登 |
島津家久 |
宇野宗佑 |
坂崎直盛 |
海部俊樹 |
毛利元就 |
宮澤喜一 |
小平季遠 |
細川護煕 |
北条氏綱 |
羽田孜 |
堀尾吉晴 |
村山富市 |
前田利家 |
橋本龍太郎 |
蒲池鑑盛 |
/*Unknown*/ |
|
CoSortのSortCLジョブスクリプト(個人データフィールドを保護する)
# Encode: UTF-8
#/LOCALE=ja_JP.utf8
/LIBRARY="$COSORT_HOME/lib/libcscrypt.so"
/INFILE=tousyo-a # tab-delimited format
/ALIAS=tse /FIELD=(Issue,POS=1,SEP='\t')
/FIELD=(Symbol,POS=2,SIZE=4,SEP='\t')
/FIELD=(LastTrade,POS=3,SIZE=5,SEP='\t',NUMERIC)
/FIELD=(Volume,POS=4,SEP='\t',NUMERIC)
/FIELD=(Change,POS=5,SIZE=6,SEP='\t', NUMERIC)
/FIELD=(Percent,POS=6,SIZE=4.2,SEP='\t', NUMERIC)
/INFILE=buys # fixed-position format
/ALIAS=buys /FIELD=(Shares,POS=1,SIZE=5)
/FIELD=(Symbol,POS=9,SIZE=4)
/FIELD=(ssno,POS=16,SIZE=11)
/FIELD=(Client,POS=30,SIZE=15)
# /FIELD=(CRLF,POS=43,SIZE=2)
/JOIN FULL_OUTER NOT_SORTED tse NOT_SORTED buys WHERE tse.Symbol EQ buys.Symbol
/OUTFILE=Secure_trades_u # summary record format
/HEADREC=" -----------\n"
/FIELD=(New_balance,POS=75,SIZE=10.0,MIL,NUMERIC)
/SUM New_balance from (tse.LastTrade * buys.Shares) # expression
/OUTFILE=Secure_trades_u # detail record format
# /HEADREC="Client SS# Symbol Shares LastTrade Shares*LT Ln.\n\n"
/HEADREC="顧客 ID# 銘柄コード 株数 終値 株数*終値 Ln.\n\n"
# If not empty, provide pseudonym for the Clients from SET file:
/FIELD=(pseudo_name,SET=pseudo_set.utf8[buys.Client],SIZE=15)
/FIELD=(name,POS=1,IF buys.Client EQ " " THEN {5}" " ELSE psuedo_name)
# If not empty, encrypt ssno field with AES256:
/FIELD=(encrypted_ssno,POS=20,IF ssno EQ " " THEN "" ELSE encryptAES256(ssno))
# If not empty, de-identify symbol fields:
/FIELD=(deid_symbol1,POS=46,IF buys.Symbol EQ " " THEN "" ELSE de_identify(buys.Symbol,"abc"))
/FIELD=(deid_symbol2,POS=52,IF tse.Symbol EQ " " THEN "" ELSE de_identify(tse.Symbol,"abc"))
/FIELD=(buys.Shares,POS=61,SIZE=5)
/FIELD=(tse.LastTrade,POS=71,SIZE=5.0,NUMERIC)
# If records match, calculate last trade * volume:
/FIELD=(product,POS=80,SIZE=10.0,MIL,NUMERIC,IF tse.Symbol NE buys.Symbol THEN {9} " " ELSE tse.LastTrade * buys.Shares)
/FIELD=(Sequencer,POS=92,SIZE=4) # discussion reference nb
安全な出力ファイル secure_trades:(氏名は偽名化、個人コードは暗号化、会社コードは識別不能化されている)
顧客 |
個人コード |
会社 |
銘柄コード |
株数 |
終値 |
株数*終値 |
Ln. |
---|---|---|---|---|---|---|---|
宇喜多直家 |
HZxxfOODiWH7/7PkgZZjXw== |
5635 |
5635 |
1000 |
217 |
217,000 |
1 |
井伊直虎 |
b+zJGvdsQR9C3u7VIil4Vg== |
5657 |
8500 |
0 |
0 |
2 |
|
|
5665 |
0 |
0 |
3 |
|||
|
5664 |
647 |
0 |
4 |
|||
小平季遠 |
wPubF1zFWJiueB4VZr6KyA== |
5668 |
5668 |
825 |
191 |
157,575 |
5 |
|
5674 |
160 |
0 |
6 |
|||
|
56;; |
1552 |
0 |
7 |
|||
坂崎直盛 |
d+SOp4f83fU+5LQqY5sC6w== |
56;< |
56;< |
9000 |
1889 |
17,001,000 |
8 |
小早川隆景 |
CQ93rhKKFRnfCvfPC1OVRQ== |
5849 |
3250 |
0 |
0 |
9 |
|
伊達政宗 |
Gs4ZT/HqcFhwc2g4oEsezQ== |
5736 |
5736 |
950 |
115 |
109,250 |
10 |
中村一氏 |
Tl/RPFMUyY26vccjossBrQ== |
5736 |
5736 |
1000 |
115 |
115,000 |
11 |
島津家久 |
kluZQY9h5ntH7NpeDhQ+Mw== |
5757 |
5757 |
4300 |
927 |
3,986,100 |
12 |
南部晴政 |
pI2bZgAGWJlGWenfXL30Ng== |
575: |
575: |
2100 |
183 |
384,300 |
13 |
武田信玄 |
a+r9AyZdz1GwaJmQ3vRvAQ== |
5796 |
775 |
0 |
0 |
14 |
|
井伊直政 |
NDE7/5fbf9md3kRP3Lwt+g== |
5946 |
25000 |
0 |
0 |
15 |
|
|
5995 |
737 |
0 |
16 |
|||
蠣崎季広 |
1OT7tR0oQwioioEC8p8GiA== |
5994 |
5994 |
1500 |
8060 |
12,090,000 |
17 |
|
5;5< |
137 |
0 |
18 |
|||
|
5;43 |
597 |
0 |
19 |
|||
|
5;45 |
1249 |
0 |
20 |
|||
|
5;44 |
1164 |
0 |
21 |
|||
堀尾吉晴 |
2/cjA7wkt9/1kyWNZYJZRQ== |
5;69 |
855 |
0 |
0 |
22 |
|
|
5;94 |
1545 |
0 |
23 |
|||
島津貴久 |
zkHcJfLxfz6PTlMICrqbDg== |
5;99 |
5;99 |
400 |
5840 |
2,336,000 |
24 |
|
5;:3 |
340 |
0 |
25 |
|||
|
5;:9 |
332 |
0 |
26 |
|||
|
5;<4 |
11 |
0 |
27 |
|||
南部信直 |
hKJuvbgr8OIvpQKUx7hw9w== |
5:35 |
5:35 |
950 |
336 |
319,200 |
28 |
馬場信春 |
j6VyS6bbXYgatYL5JIFLZA== |
5:34 |
5:34 |
2000 |
567 |
1,134,000 |
29 |
|
5:36 |
600 |
0 |
30 |
|||
|
5:37 |
60 |
0 |
31 |
|||
前田利家 |
6P2018n88pvpR7N1dp9NaA== |
5:39 |
50 |
0 |
0 |
32 |
|
蒲池鑑盛 |
hJsLLCvljbyOLOLTTfPIhg== |
5:3: |
5:3: |
90 |
291 |
26,190 |
33 |
|
5:53 |
510 |
0 |
34 |
|||
|
5:54 |
393 |
0 |
35 |
|||
|
5:56 |
178 |
0 |
36 |
|||
|
5:58 |
82 |
0 |
37 |
|||
河尻秀隆 |
qc9F6oLKCTEENci3lAHyvg== |
5:57 |
5:57 |
5000 |
178 |
890,000 |
38 |
|
5:59 |
202 |
0 |
39 |
|||
|
5:5< |
671 |
0 |
40 |
|||
|
5:43 |
356 |
0 |
41 |
|||
毛利元就 |
CV6RCAc/6nxRydcixw2TvA== |
5:45 |
5:45 |
3500 |
198 |
693,000 |
42 |
|
5:44 |
188 |
0 |
43 |
|||
|
5:48 |
422 |
0 |
44 |
|||
|
5:49 |
134 |
0 |
45 |
|||
|
5:4; |
305 |
0 |
46 |
|||
|
5:66 |
588 |
0 |
47 |
|||
北条氏綱 |
WOl6ZTkEdDv+S6rhGkzHXw== |
5:68 |
5:68 |
9000 |
268 |
2,412,000 |
48 |
|
5:67 |
736 |
0 |
49 |
|||
|
5:6< |
166 |
0 |
50 |
|||
|
5:8; |
299 |
0 |
51 |
|||
尼子経久 |
oN+O2F3dsKMSxiyzuEfK+w== |
5:74 |
5:74 |
3333 |
181 |
603,273 |
52 |
----------- |
|||||||
42,473,888 |
2. 元のフィールドを復元する(復号化、実名化、再識別化)
実名化セットファイル:pseudo_restore.set
宇喜多直家 |
吉田茂 |
伊達政宗 |
片山哲 |
井伊直政 |
芦田均 |
小早川隆景 |
鳩山一郎 |
武田信玄 |
石橋湛山 |
島津貴久 |
岸信介 |
南部晴政 |
池田勇人 |
南部信直 |
佐藤榮作 |
蠣崎季広 |
田中角榮 |
河尻秀隆 |
三木武夫 |
尼子経久 |
福田赳夫 |
馬場信春 |
大平正芳 |
井伊直虎 |
鈴木善幸 |
中村一氏 |
中曽根康弘 |
島津家久 |
竹下登 |
坂崎直盛 |
宇野宗佑 |
毛利元就 |
海部俊樹 |
小平季遠 |
宮澤喜一 |
北条氏綱 |
細川護煕 |
堀尾吉晴 |
羽田孜 |
前田利家 |
村山富市 |
蒲池鑑盛 |
橋本龍太郎 |
/*Unknown*/ |
|
CoSortのSortCLジョブスクリプト(元のフィールドを復元する)
# Load encryption library
/LIBRARY="$COSORT_HOME/lib/libcscrypt.so"
/INFILE=Secure_trades
/INCOLLECT=52 # omit summary fields from Secure_trades output
/INSKIP=2 # omit header from Secure_trades output
# define the layout of Secure_trades detail records:
/FIELD=(Client,POS=1,SIZE=15)
/FIELD=(Client_flag,POS=1,SIZE=3)
/FIELD=(ssno,POS=20,SIZE=24)
/FIELD=(ssno_flag,POS=20,SIZE=1)
/FIELD=(buys_Symbol,POS=46,SIZE=4)
/FIELD=(tse_Symbol,POS=52,SIZE=4)
/FIELD=(Shares,POS=61,SIZE=5)
/FIELD=(LastTrade,POS=71,SIZE=5.0,NUMERIC)
/FIELD=(product,POS=80,SIZE=10.0,NUMERIC)
/FIELD=(Sequencer,POS=92,SIZE=4)
/REPORT
/OUTFILE=Restore_trades # summary record format
/HEADREC=" -----------\n"
/FIELD=(New_balance,POS=63,MIL,SIZE=14)
/SUM New_balance from (LastTrade * Shares) # expression
/OUTFILE=Restore_trades # detail record format
/HEADREC="氏名 個人コード 会社コード 株数 終値 株数*終値 Ln.\n\n"
# If not empty, restore original Clients from the pseudo_restore SET file
/FIELD=(T,SET= pseudo_restore.set[Client],POS=1,SIZE=15)
/FIELD=(restore_Client,POS=1,IF Client_flag EQ " " THEN {5}" " ELSE T)
# If not empty, decrypt the ssno field using AES256 decryption:
/FIELD=(restore_ssno,POS=20,SIZE=11,IF ssno_flag EQ " " THEN {11}" " ELSE decryptAES256(ssno))
# If not empty, re-identify symbol fields:
/FIELD=(restore_buys_symbol,POS=34,IF buys_symbol EQ " " THEN "" ELSE re_identify(buys_symbol,"abc"))
/FIELD=(restore_buys_symbol,POS=40,IF tse_symbol EQ " " THEN "" ELSE re_identify(tse_symbol,"abc"))
/FIELD=(Shares,POS=51,SIZE=8.0)
/FIELD=(LastTrade,POS=61,SIZE=8.0,NUMERIC)
/FIELD=(product,POS=70,SIZE=12.0)
/FIELD=(Sequencer,POS=84)
出力ファイル restore_trades:(氏名、個人コード、会社コードが復元されている)
氏名 |
個人コード |
会社コード |
株数 |
終値? |
株数*終値 |
?Ln. |
|
---|---|---|---|---|---|---|---|
吉田茂 |
365-57-7505 |
1301 |
1301 |
1000 |
217 |
217,000 |
1 |
鈴木善幸 |
311-23-8269 |
1315 |
8500 |
0 |
0 |
2 |
|
1331 |
0 |
0 |
3 |
||||
1332 |
647 |
0 |
4 |
||||
宮澤喜一 |
373-37-4567 |
1334 |
1334 |
825 |
191 |
157,575 |
5 |
1352 |
160 |
0 |
6 |
||||
1377 |
1552 |
0 |
7 |
||||
宇野宗佑 |
270-71-5951 |
1379 |
1379 |
9000 |
1889 |
17,001,000 |
8 |
鳩山一郎 |
129-69-2156 |
1426 |
3250 |
0 |
0 |
9 |
|
片山哲 |
762-25-9601 |
1503 |
1503 |
950 |
115 |
109,250 |
10 |
中曽根康弘 |
533-97-5223 |
1503 |
1503 |
1000 |
115 |
115,000 |
11 |
竹下登 |
601-13-7610 |
1515 |
1515 |
4300 |
927 |
3,986,100 |
12 |
池田勇人 |
578-52-7911 |
1518 |
1518 |
2100 |
183 |
384,300 |
13 |
石橋湛山 |
108-46-1219 |
1563 |
775 |
0 |
0 |
14 |
|
芦田均 |
128-61-1131 |
1623 |
25000 |
0 |
0 |
15 |
|
1661 |
737 |
0 |
16 |
||||
田中角榮 |
617-51-7283? |
1662 |
1662 |
1500 |
8060 |
12,090,000 |
17 |
1719 |
137 |
0 |
18 |
||||
1720 |
597 |
0 |
19 |
||||
1721 |
1249 |
0 |
20 |
||||
1722 |
1164 |
0 |
21 |
||||
羽田孜 |
377-63-7162 |
1736 |
855 |
0 |
0 |
22 |
|
1762 |
1545 |
0 |
23 |
||||
岸信介 |
562-21-6485 |
1766 |
1766 |
400 |
5840 |
2,336,000 |
24 |
1780 |
340 |
0 |
25 |
||||
1786 |
332 |
0 |
26 |
||||
1792 |
11 |
0 |
27 |
||||
佐藤榮作 |
467-12-5544 |
1801 |
1801 |
950 |
336 |
319,200 |
28 |
大平正芳 |
765-85-6704 |
1802 |
1802 |
2000 |
567 |
1,134,000 |
29 |
1803 |
600 |
0 |
30 |
||||
1805 |
60 |
0 |
31 |
||||
村山富市 |
474-82-4342 |
1806 |
50 |
0 |
0 |
32 |
|
橋本龍太郎 |
277-76-0741 |
1808 |
1808 |
90 |
291 |
26,190 |
33 |
1810 |
510 |
0 |
34 |
||||
1812 |
393 |
0 |
35 |
||||
1813 |
178 |
0 |
36 |
||||
1814 |
82 |
0 |
37 |
||||
三木武夫 |
583-14-2464 |
1815 |
1815 |
5000 |
178 |
890,000 |
38 |
1816 |
202 |
0 |
39 |
||||
1819 |
671 |
0 |
40 |
||||
1820 |
356 |
0 |
41 |
||||
海部俊樹 |
254-66-0751 |
1821 |
1821 |
3500 |
198 |
693,000 |
42 |
1822 |
188 |
0 |
43 |
||||
1824 |
422 |
0 |
44 |
||||
1826 |
134 |
0 |
45 |
||||
1827 |
305 |
0 |
46 |
||||
1833 |
588 |
0 |
47 |
||||
細川護煕 |
259-21-9896 |
1834 |
1834 |
9000 |
268 |
2,412,000 |
48 |
1835 |
736 |
0 |
49 |
||||
1839 |
166 |
0 |
50 |
||||
1847 |
299 |
0 |
51 |
||||
福田赳夫 |
449-30-6343 |
1852 |
1852 |
3333 |
181 |
603,273 |
52 |
?----------- |
|||||||
42,473,888 |
-
製品情報
-
ソリューション
-
事例紹介
-
お見積もり・試用版