ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android Подошло врСмя Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ криптографичСскиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ PKCS#11 ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android. ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² для Android. Но, Ссли это ΠΈ Ρ‚Π°ΠΊ, Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ явлСниС. Но ΡƒΠΆΠ΅ сСгодня ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° cryptoarmpkcs-A разрабатываСтся для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android с использованиСм Androwish Π½Π° скриптовом языкС Tcl/Tk, Ρ‚ΠΎ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ TclPKCS11 вСрсии 1.0.1.

ΠŸΡ€ΠΈ этом Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ. ВсС Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано, это Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ скрипт для сборки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, написанной Π½Π° языкС Π‘ΠΈ, ΠΏΠΎΠ΄ Android ΠΈ сам дистрибутив Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ этот ΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ls11sw2016 ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠ³ΠΎ ls11cloud Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Π”Π°Π»Π΅Π΅ всС просто. ДобавляСм Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

  • ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ls11sw2016;
  • ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ls11cloud;
  • Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΠΊΠ΅Π½ PKCS11#11.

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½. Если Ρ€Π°Π½Π΅Π΅ ΠΎΠ½ Π½Π΅ создавался, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Напомним, Ρ‡Ρ‚ΠΎ инициализация Ρ‚ΠΎΠΊΠ΅Π½Π° состоит Π² Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ установлСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ PIN-ΠΊΠΎΠ΄Π°:

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с соотвСтствии с рСкомСндациями PKCS#11 v.2.40 ΠΈ ВК-26. Для получСния ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ криптографичСскиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠ²ΠΊΡƒ «О Ρ‚ΠΎΠΊΠ΅Π½Π΅ ΠΈ Π΅Π³ΠΎ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈΒ» Π² основном мСню (Β«Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Β»). БСгодня Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ российской ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°:

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос:- ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹ΠΉ сСртификат Π½Π° Ρ‚ΠΎΠΊΠ΅Π½. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ это ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам сСртификат ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ PKCS#12 (ΠΊΠ½ΠΎΠΏΠΊΠ° Β«Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с PKCS12/PFXΒ»):

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ создания запроса (PKCS#10) Π½Π° сСртификат, Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ (функция «Запрос Π½Π° сСртификат») прСдусматриваСт Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ нСпосрСдствСнно Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Π΅:

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ запрос Π½Π° Ρ„Π»ΡΡˆΠΊΠΈ ΠΈ вмСстС с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈΠ΄Ρ‚ΠΈ Π² ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡŽΡˆΠΈΠΉ Ρ†Π΅Π½Ρ‚Ρ€ Π·Π° сСртификатом. Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСртификат Π² тСстовых цСлях ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎ, Ρ‚ΠΎ для выпуска сСртификата ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ CAFL63. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ сСртификат импортируСтся Π½Π° Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ запроса/Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚Π°Β»:

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сСртификатами, хранящимися Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β».

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΌΡƒ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ. И остаСтся ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ вопрос с пСрСносом Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ сСртификатов. Π•ΡΡ‚ΡŒ Π»ΠΈ Π² этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ?

ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ cryptoarmpkcs-A для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ здСсь:

P.S. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π°

Для сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° bones ΠΈΠ· состава AndroWish SDK. ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π° появляСтся ΠΊΠ½ΠΎΠΏΠΊΠ° Β«Install & runΒ», послС наТатия ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ открываСтся ΠΎΠΊΠ½ΠΎ ΠΆΡƒΡ€Π½Π°Π»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ adb logcat (срСдства вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° Android Debug Bridge). НСдостатком этого экрана являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ слоТно Π½Π°ΠΉΡ‚ΠΈ сообщСниС ΠΎΠ± ошибкС, особСнно с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ„Π»Π°ΠΆΠΊΠΎΠΌ Β«VΒ» (verbose). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Β«SaveΒ», которая сохраняСт ΠΆΡƒΡ€Π½Π°Π» Π² Ρ„Π°ΠΉΠ»Π΅ /tmp/logBone.txt (Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Linux):

ИспользованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² криптографичСских Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² PKCS#11 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android

Π‘ появлСниСм этой ΠΊΠ½ΠΎΠΏΠΊΠΈ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прилоТСния Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростился.

Для добавлСния ΠΊΠ½ΠΎΠΏΠΊΠΈ достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» bones послС строки 2591 слСдущий ΠΊΠΎΠ΄:

	    ttk::button $l.frame.clear -text "Clear" -width 6 
		-command [list adb_logcat_clear $l.text]
#Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄
	    ttk::button $l.frame.save -text "Save" -width 6 
		-command [list adb_logcat_save $l.text]

	    ttk::button $l.frame.run -text "Run" -width 6 
		-command [list adb_logcat_run $l]

Команда сохранСния adb_logcat_save ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

proc adb_logcat_save {text} {
    set tt [$text get 1.0 end]
    set file "/tmp/logBone.txt"
    file delete -force $file
  #БобствСнно запись Π² Ρ„Π°ΠΉΠ»
    set fd [open $file w]
    chan configure $fd -translation binary
    puts -nonewline $fd $tt
    close $fd
}

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com