Skip to content

Commit fbf8f9a

Browse files
authored
Merge pull request #184 from tamasan238/wolfssl-shangmi
add src-ja/appendix09.md
2 parents 47cd35d + 18471b7 commit fbf8f9a

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

wolfSSL/src-ja/appendix09.md

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# wolfSM (ShangMi)
2+
3+
この章では、wolfSSLにおける中国国家標準の暗号化アルゴリズムであるShangMi(SM)に関する情報を提供します。
4+
5+
wolfSMは以下の要素をサポートしています。
6+
7+
* SM3 - ハッシュ関数
8+
* SM4 - 暗号
9+
* SM2 - ECDH鍵共有と指定された256ビット楕円曲線を使用した署名スキーム
10+
11+
使用するためには、コードをwolfSSLにインストールする必要があります。
12+
ただし、テストとビルド設定コードはすでにwolfSSLに含まれています。
13+
14+
## wolfSMの取得とインストール
15+
16+
### GitHubからwolfSMを取得する
17+
18+
GitHubからwolfSMリポジトリをクローンします。
19+
20+
```sh
21+
git clone https://github.com/wolfssl/wolfsm.git
22+
```
23+
24+
### GitHubからwolfSSLを取得する
25+
26+
SMアルゴリズム実装をビルドしてテストするにはwolfSSLが必要です。
27+
wolfSMの隣にGitHubからwolfSSLリポジトリをチェックアウトします。
28+
29+
```sh
30+
# ディレクトリ構造は次のようになります。
31+
# <install-dir>
32+
# ├── wolfsm
33+
# └── wolfssl
34+
```
35+
36+
```sh
37+
cd .. # wolfsm を含むディレクトリに移動
38+
git clone https://github.com/wolfssl/wolfssl.git
39+
```
40+
41+
### SMコードをwolfSSLにインストールする
42+
43+
wolfSSLにSMコードをインストールするには、インストールスクリプトを使用します。
44+
45+
```sh
46+
cd wolfsm
47+
./install.sh
48+
```
49+
50+
## wolfSMのビルド
51+
52+
wolfSMファイルをwolfSSLにインストールした後に、SMアルゴリズムをwolfSSLにビルドできます。
53+
54+
configure時に必要なアルゴリズムをご選択ください。
55+
56+
* `--enable-sm3`
57+
* `--enable-sm4-ecb`
58+
* `--enable-sm4-cbc`
59+
* `--enable-sm4-ctr`
60+
* `--enable-sm4-gcm`
61+
* `--enable-sm4-ccm`
62+
* `--enable-sm2`
63+
64+
例えばSM3、SM4-GCM、SM2を含める場合、次のようにします。
65+
66+
```sh
67+
./autogen.sh
68+
./configure --enable-sm3 --enable-sm4-gcm --enable-sm2
69+
make
70+
sudo make install
71+
```
72+
73+
### SM2の最適化実装
74+
75+
SM2の最適化された実装を使用するには、Cのみのコードを使用するか、より高速なアセンブリコードを備えたCコードを使用できます。
76+
77+
- Cコードのみの場合: `--enable-sp`
78+
- Cとアセンブリコードの場合: `--enable-sp --enable-sp-asm`
79+
80+
最適化されたCコードは、32ビットおよび64ビットCPUで利用可能です。
81+
82+
アセンブリコードは、以下のプラットフォームで利用可能です。
83+
84+
* Intel x64
85+
* Aarch64
86+
* ARM 32-bit
87+
* ARM Thumb2
88+
* ARM Thumb
89+
90+
## wolfSMのテスト
91+
92+
SM暗号が動作することをテストするには、次のコマンドを実行します。
93+
94+
```sh
95+
make test
96+
```
97+
98+
次のコマンドで、有効化されたアルゴリズムのベンチマークも実行できます。
99+
100+
```sh
101+
./wolfcrypt/benchmark/benchmark
102+
```
103+
104+
特定のアルゴリズムのベンチマークを行うには、アルゴリズムに対応するオプションをコマンドラインに追加してください。
105+
106+
* SM2: `-sm2`
107+
* SM3: `-sm3`
108+
* SM4: `-sm4` もしくは、
109+
* SM4-CBC: `-sm4-cbc`
110+
* SM4-GCM: `-sm4-gcm`
111+
* SM4-CCM: `-sm4-ccm`
112+
113+
### TLSのテスト
114+
115+
SM暗号はTLS 1.2およびTLS 1.3で使用できます。
116+
117+
**注意**: SM暗号スイートを動作させるには、SM2、SM3、および少なくとも1つのSM4暗号をビルドする必要があります。すべてのアルゴリズムはSMである必要があります。
118+
119+
追加される暗号スイートは以下の通りです。
120+
121+
- ECDHE-ECDSA-SM4-CBC-SM3(TLSv1.2、`--enable-sm2 --enable-sm3 --enable-sm4-cbc`
122+
- ECDHE-ECDSA-SM4-GCM-SM3(TLSv1.2、`--enable-sm2 --enable-sm3 --enable-sm4-gcm`
123+
- ECDHE-ECDSA-SM4-CCM-SM3(TLSv1.2、`--enable-sm2 --enable-sm3 --enable-sm4-ccm`
124+
- TLS13-SM4-GCM-SM3(TLSv1.3、`--enable-sm2 --enable-sm3 --enable-sm4-gcm`
125+
- TLS13-SM4-CCM-SM3(TLSv1.3、`--enable-sm2 --enable-sm3 --enable-sm4-ccm`
126+
127+
#### TLS 1.2でSM暗号スイートを使用する
128+
129+
「ECDHE-ECDSA-SM4-CBC-SM3」暗号スイートを使用してTLS 1.2をテストする例を以下に示します。
130+
131+
```sh
132+
./examples/server/server -v 3 -l ECDHE-ECDSA-SM4-CBC-SM3 \
133+
-c ./certs/sm2/server-sm2.pem -k ./certs/sm2/server-sm2-priv.pem \
134+
-A ./certs/sm2/client-sm2.pem -V &
135+
./examples/client/client -v 3 -l ECDHE-ECDSA-SM4-CBC-SM3 \
136+
-c ./certs/sm2/client-sm2.pem -k ./certs/sm2/client-sm2-priv.pem \
137+
-A ./certs/sm2/root-sm2.pem -C
138+
```
139+
140+
実行結果は以下のようになります。
141+
142+
```
143+
SSL version is TLSv1.2
144+
SSL cipher suite is TLS_ECDHE_ECDSA_WITH_SM4_CBC_SM3
145+
SSL curve name is SM2P256V1
146+
SSL version is TLSv1.2
147+
SSL cipher suite is TLS_ECDHE_ECDSA_WITH_SM4_CBC_SM3
148+
SSL curve name is SM2P256V1
149+
Client message: hello wolfssl!
150+
I hear you fa shizzle!
151+
```
152+
153+
#### TLS 1.3でSM暗号スイートを使用する
154+
155+
「TLS13-SM4-GCM-SM3」暗号スイートを使用してTLS 1.3をテストする例を以下に示します。
156+
157+
```sh
158+
./examples/server/server -v 4 -l TLS13-SM4-GCM-SM3 \
159+
-c ./certs/sm2/server-sm2.pem -k ./certs/sm2/server-sm2-priv.pem \
160+
-A ./certs/sm2/client-sm2.pem -V &
161+
./examples/client/client -v 4 -l TLS13-SM4-GCM-SM3 \
162+
-c ./certs/sm2/client-sm2.pem -k ./certs/sm2/client-sm2-priv.pem \
163+
-A ./certs/sm2/root-sm2.pem -C
164+
```
165+
166+
実行結果は以下のようになります。
167+
168+
```
169+
SSL version is TLSv1.3
170+
SSL cipher suite is TLS_SM4_GCM_SM3
171+
SSL curve name is SM2P256V1
172+
SSL version is TLSv1.3
173+
SSL cipher suite is TLS_SM4_GCM_SM3
174+
SSL curve name is SM2P256V1
175+
Client message: hello wolfssl!
176+
I hear you fa shizzle!
177+
```

0 commit comments

Comments
 (0)