ã¦ã§ãæå·å API
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
ã¡ã¢: ãã®æ©è½ã¯ã¦ã§ãã¯ã¼ã«ã¼å ã§å©ç¨å¯è½ã§ãã
ã¦ã§ãæå·å API (Web Crypto API) ã¯ãæå·åã使ç¨ãã¦ã·ã¹ãã ãæ§ç¯ããããã«ã¹ã¯ãªãããæå·åããªããã£ãã使ç¨ãããã¨ãå¯è½ã«ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãã
ä¸é¨ã®ãã©ã¦ã¶ã¼ã§ã¯ãCrypto ã¨ããã¤ã³ã¿ã¼ãã§ã¤ã¹ãæç¢ºã«å®ç¾©ããã¦ããããæå·åããã¦ããªãã¦ãå®è£
ããã¦ãã¾ãããæ··ä¹±ãé¿ããããã«ããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã¨ããããã£ã¯ã¦ã§ãæå·å API ãå®è£
ãã¦ãããã©ã¦ã¶ã¼ããåé¤ãããã¦ã§ãæå·å API ã®ãã¹ã¦ã®ã¡ã½ããã¯æ°ããã¤ã³ã¿ã¼ãã§ã¤ã¹ãã¤ã¾ã SubtleCrypto ã§å©ç¨å¯è½ã«ãªãã¾ãããCrypto.subtle ããããã£ã¯ãããå®è£
ãã¦ãããªãã¸ã§ã¯ãã¸ã®ã¢ã¯ã»ã¹ãæä¾ãã¾ãã
è¦å: ã¦ã§ãæå·å API ã¯ãä½ã¬ãã«ã®æå·åããªããã£ãã夿°æä¾ãã¦ãã¾ãããããã¯é常ã«ä½¿ãæ¹ãééãããããããã¦é¢é£ããè½ã¨ãç©´ã¯é常ã«å¾®å¦ã§ããå ´åãããã¾ãã
åºæ¬çãªæå·æ©è½ãæ£ãã使ç¨ãã¦ããã¨ä»®å®ãã¦ããå®å ¨ãªéµç®¡çã¨å ¨ä½çãªã»ãã¥ãªãã£ã·ã¹ãã ã®è¨è¨ãæ£ããçè§£ããã®ã¯é常ã«é£ãããä¸è¬çã«ã»ãã¥ãªãã£åéã®ã¹ãã·ã£ãªã¹ãã®é åã§ãã
ã»ãã¥ãªãã£ã·ã¹ãã ã®è¨è¨ã¨å®è£ ã«èª¤ããããã¨ãã·ã¹ãã ã®ã»ãã¥ãªãã£ãå®å ¨ã«ç¡å¹ã«ãªãå¯è½æ§ãããã¾ãã
å¦ãã§å®é¨ãããã¨ã¯å¤§åã§ããããã®åéã«ç²¾éããå°éå®¶ãããªãã®ææç©ãå¾¹åºçã«ã¬ãã¥ã¼ããã¾ã§ã¯ããã®ã»ãã¥ãªãã£ãä¿è¨¼ããããã»ã®ãããããããªãããã«ãã¦ãã ãããCrypto 101 ã³ã¼ã¹ã¯ãå®å ¨ãªã·ã¹ãã ã®è¨è¨ã¨å®è£ ã«ã¤ãã¦å¦ã¶ããã®ç´ æ´ãããå ¥éå ã¨ãªãã§ãããã
ã¤ã³ã¿ã¼ãã§ã¤ã¹
Crypto-
æå·å¦çã«å¼·åºãªä¹±æ°ã¸ã§ãã¬ã¼ã¿ã¼ãªã©ã®åºæ¬çãªæå·åæ©è½ãæä¾ãã
SubtleCryptoãªãã¸ã§ã¯ããä»ãã¦æå·ããªããã£ãã«ã¢ã¯ã»ã¹ã§ãã¾ãã ãã®åã®ãªãã¸ã§ã¯ãã«ã¯ãã°ãã¼ãã«ã¹ã³ã¼ãå ã§Window.cryptoã¾ãã¯WorkerGlobalScope.cryptoã使ç¨ãã¦ã¢ã¯ã»ã¹ã§ãã¾ãã SubtleCrypto-
éµã®çæãæå·åã復å·ãéµã®ã©ããã³ã°ããã³ã¢ã³ã©ããã³ã°ã¨ãã£ãå ·åã«ãä½ã¬ãã«ã®æå·åæ©è½ãæä¾ãããªãã¸ã§ã¯ãã表ãã¾ãã
CryptoKey-
æå·åéµã表ãã¾ããããã¯ã
SubtleCryptoã®ã¡ã½ããgenerateKey()ãderiveKey()ãimportKey()ãunwrapKey()ã®ããããããåå¾ããããã®ã§ãã
è¾æ¸
AesCbcParams-
AES-CBC ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.encrypt()ãSubtleCrypto.decrypt()ãSubtleCrypto.wrapKey()ãã¾ãã¯SubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã AesCtrParams-
AES-CTR ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.encrypt()ãSubtleCrypto.decrypt()ãSubtleCrypto.wrapKey()ãã¾ãã¯SubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã AesGcmParams-
AES-GCM ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.encrypt()ãSubtleCrypto.decrypt()ãSubtleCrypto.wrapKey()ãã¾ãã¯SubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã AesKeyGenParams-
AES ãã¼ãçæããéãã¤ã¾ãã¢ã«ã´ãªãºã ã AES-CBCãAES-CTRãAES-GCMãAES-KW ã®ããããã¨ãã¦æå®ãããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.generateKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã CryptoKeyPair-
é対称æå·ã¢ã«ã´ãªãºã ã§ä½¿ç¨ããã¦ããå ¬ééµã¨ç§å¯éµã®ãã¢ã表ãã¾ãã
EcKeyGenParams-
æ¥åæ²ç·ãã¼ã¹ã®éµãã¢ãçæããéãã¤ã¾ãã¢ã«ã´ãªãºã ã ECDSA ã¾ã㯠ECDH ã®ã©ã¡ããã¨ãã¦èå¥ãããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.generateKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã EcKeyImportParams-
æ¥åæ²ç·ãã¼ã¹ã®éµãã¢ãçæããéãã¤ã¾ãã¢ã«ã´ãªãºã ã ECDSA ã¾ã㯠ECDH ã®ã©ã¡ããã¨ãã¦èå¥ãããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.importKey()ã¾ãã¯SubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã EcdhKeyDeriveParams-
ECDH ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã
algorithm弿°ã¨ãã¦SubtleCrypto.deriveKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã EcdsaParams-
ECDSA ã¢ã«ã´ãªãºã ã使ç¨ããéã
algorithm弿°ã¨ãã¦SubtleCrypto.sign()ã¾ãã¯SubtleCrypto.verify()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã HkdfParams-
HKDF ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã
algorithm弿°ã¨ãã¦SubtleCrypto.deriveKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã HmacImportParams-
HMAC ã¢ã«ã´ãªãºã ã®ãã¼ãçæããéã
algorithm弿°ã¨ãã¦SubtleCrypto.importKey()ã¾ãã¯SubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã HmacKeyGenParams-
HMAC ã¢ã«ã´ãªãºã ç¨ã®éµãçæããéã
algorithm弿°ã¨ãã¦SubtleCrypto.generateKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã Pbkdf2Params-
PBKDF2 ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã
algorithm弿°ã¨ãã¦SubtleCrypto.deriveKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã RsaHashedImportParams-
RSA ãã¼ã¹ã®éµãã¢ãã¤ã³ãã¼ãããéãã¤ã¾ãã¢ã«ã´ãªãºã ã RSASSA-PKCS1-v1_5ãRSA-PSSãRSA-OAEP ã®ããããã¨ãã¦èå¥ãããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.importKey()ã¾ãã¯SubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã RsaHashedKeyGenParams-
RSA ãã¼ã¹ã®éµãã¢ãçæããéãã¤ã¾ãã¢ã«ã´ãªãºã ã RSASSA-PKCS1-v1_5ãRSA-PSSãRSA-OAEP ã®ããããã¨ãã¦èå¥ãããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.generateKey()ã«æ¸¡ãããã¹ããªãã¸ã§ã¯ãã表ãã¾ãã RsaOaepParams-
RSA_OAEP ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã«ã
algorithm弿°ã¨ãã¦SubtleCrypto.encrypt()ãSubtleCrypto.decrypt()ãSubtleCrypto.wrapKey()ãSubtleCrypto.unwrapKey()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã RsaPssParams-
RSA-PSS ã¢ã«ã´ãªãºã ã使ç¨ããå ´åã
algorithm弿°ã¨ãã¦SubtleCrypto.sign()ã¾ãã¯SubtleCrypto.verify()ã«æ¸¡ãã¹ããªãã¸ã§ã¯ãã表ãã¾ãã
ä»ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¸ã®æ¡å¼µ
Window.crypto-
ã¡ã¤ã³ã¹ã¬ããã®ã¹ã³ã¼ãå ã§ã°ãã¼ãã«ãªãã¸ã§ã¯ãã«é¢é£ä»ãããã
Cryptoãªãã¸ã§ã¯ãã表ãã¾ãã WorkerGlobalScope.crypto-
ã¯ã¼ã«ã¼ã¹ã³ã¼ãå ã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã«é¢é£ä»ãããã
Cryptoãªãã¸ã§ã¯ãã表ãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| Web Cryptography Level 2 > # crypto-interface > |