Надо сделать два ключа - секретный и не очень.
Секретным шифрануть архив и отправить на болванке в путь.
Открытый ключ заслать по почте, чтоб там расшифровали.gpg и openssl при шифровании просят пароли.
# openssl -pass pass:mySillyPassword явно не по феншую
как и -pass file:/path/to/secret/password.txt и т.д.base64 тоже как-то не хорошо.
Чё делать-то?!
зачем в таком случаее вообще симметричное шифрование? )
> Надо сделать два ключа - секретный и не очень.
> Секретным шифрануть архив и отправить на болванке в путь.
> Открытый ключ заслать по почте, чтоб там расшифровали.тоесть когда открытый ключ перехватят - то без труда расшифруют все кто не лень...
в чем тогда смысл использования ассиметричного шифрования в данном случае?
>> Надо сделать два ключа - секретный и не очень.
>> Секретным шифрануть архив и отправить на болванке в путь.
>> Открытый ключ заслать по почте, чтоб там расшифровали.
> тоесть когда открытый ключ перехватят - то без труда расшифруют все кто
> не лень...
> в чем тогда смысл использования ассиметричного шифрования в данном случае?вы неправильно понимаете иделогию ассимметричного шифрования.
шифруют открытым ключом человека, которому Вы хотите что-то отправить, а расшифровать сможет только этот человек с помощью закрытого ключа.
> Надо сделать два ключа - секретный и не очень.А ключей не должно быть четыре?? :-O
> Чё делать-то?!
Может, man gnupg ?...
>> Надо сделать два ключа - секретный и не очень.
> А ключей не должно быть четыре?? :-O
>> Чё делать-то?!
> Может, man gnupg ?...man gpg равносилен книге Криптография для чайнегов...
--
$ openssl genrsa -out private.pem 1024
$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
$ echo 'СУПЕР ПУПЕР СЕКРЕТ' > message.txt
$ openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message.ssl
$ openssl rsautl -decrypt -inkey private.pem -in message.ssl -out decrypted.txt
$ cat decrypted.txt
СУПЕР ПУПЕР СЕКРЕТ---
Вот надо так же, только AES иль BLOWFISH
Они конечно же, пля, симметричные, но надо чёй-то придумать :)
---
>[оверквотинг удален]
> --
> $ openssl genrsa -out private.pem 1024
> $ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
> $ echo 'СУПЕР ПУПЕР СЕКРЕТ' > message.txt
> $ openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message.ssl
> $ openssl rsautl -decrypt -inkey private.pem -in message.ssl -out decrypted.txt
> $ cat decrypted.txt
> СУПЕР ПУПЕР СЕКРЕТ
> ---
> Вот надо так же, только AES иль BLOWFISHВот! Человечище! Спасибо! Только что решил мануалы читать из-за пары ключей, а тут готовый ответ. Мне время сэкономил. Все бы так отвечали красиво...
>>[оверквотинг удален]
> Вот! Человечище! Спасибо! Только что решил мануалы читать из-за пары ключей, а
> тут готовый ответ. Мне время сэкономил. Все бы так отвечали красиво...Ну это я тебе ответил, а себе ещё нет. :)
В мане пишут: http://www.openssl.org/docs/apps/rsautl.html
...
NOTESrsautl because it uses the RSA algorithm directly
can only be used to sign or verify small pieces of data.
Во, нашёл метод. Через ж...у, но интересно :)Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.
#!/bin/bash# Public/private key scheme works great if it can encrypt large files but unfortunately only
# file up to 1024 bytes can be encrypted using a public key. Secret key scheme can deal with
# big files but the same key is used for encrypting and decrypting. Therefore the best practice
# to do is to combine these two methods together: encrypt data with the secret key (not to be
# confused with private key) then encrypt the secret key with public key. problem solved.#### encrypt procedures
# [ 1 ] create a 1000-byte random key
# [ 2 ] encrypt the destination (either a file or folder) then remove the original secret key
# [ 3 ] encrypt the secret key generated at step 1 with the public key
# [ 4 ] now the secret key and the data file are both encrypted#### decrypt procedures
# [ 1 ] decrypt secret key with the private key
# [ 2 ] decrypt the data file with the decrypted secret key
# [ 3 ] delete secret key#in order to use this script, a pair of public/private keys need to be created first:
# for example:
# $ mkdir ~/.ssl
# $ cd ~/.ssl
# $ openssl genrsa -out private.pem 4096
# $ chmod 600 private.pem
# $ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
#
# the private key privated.pem should be stored in a secure location as once it's compromised,
# all the efforts to protect sensitive data will be useless.declare -rx SCRIPT=${0##*/}
TMP=`mktemp -u -p . XXX`
TMP=${TMP##*/}
KEY=secret.$TMP.key
DEBUG=1usage() {
printf "usages:\n"
printf "\t%s enc datafile public_key [ output_path ]\n" $SCRIPT
printf "\t%s enc datadir/ public_key [ output_path ]\n" $SCRIPT
printf "\t%s dec datafile.bf private_key [ output_path ]\n" $SCRIPT
}if [ $# -lt 3 ]; then
usage
exit
ficase $1 in
enc)
TIME_START=$(date "+%s")
TARGET=$2
TARGET=${TARGET%/} #remove trailing / if anyPUB_KEY=$3
[ $# -gt 3 ] && OUT_DIR=$4 || OUT_DIR=.
OUT_DIR=${OUT_DIR%/} #remove trailing / if any
ID=`mktemp -u -p . XXXX`
ID=${ID##*/}
OUTPUT=$OUT_DIR/${TARGET##*/}.bf.$ID[ ! -f $PUB_KEY -o ! -d $OUT_DIR ] && \
printf "Check if $PUB_KEY or $OUT_DIR/ exists\n" && exit 151#make sure the key is only readable by the script owner
touch $KEY && chmod 600 $KEY
KEY=$OUT_DIR/secret.key.$ID
ENC_KEY=$OUT_DIR/secret.key.rsa.$ID
dd if=/dev/random of=$KEY bs=100 count=1#encrypt the key
G1="openssl rsautl -encrypt -inkey $PUB_KEY -pubin -in $KEY -out $ENC_KEY"
[ $DEBUG -eq 1 ] && echo $G1eval $G1
G="tar -zcf - $TARGET|openssl enc -blowfish -pass file:$KEY|dd of=$OUTPUT"
[ $DEBUG -eq 1 ] && echo $G || echo "Encrypting ..."
eval $G && rm -f $KEY
TIME_END=$(date "+%s")
SECONDS_SPENT=$(expr $TIME_END - $TIME_START)
printf "Encryption Summary:\n"
printf "\tData: %s\n" $OUTPUT
printf "\tEncrypted Key: %s\n" $ENC_KEY
printf "\tTotal Time Elapsed: $SECONDS_SPENT seconds.\n"
exit 0
;;
dec)
TIME_START=$(date "+%s")
TARGET=$2
ID=${TARGET##*.}
PRIV_KEY=$3[ $# -gt 3 ] && OUT_DIR=$4 || OUT_DIR=.
#remove trailing / if any
OUT_DIR=${OUT_DIR%/}[ ! -f $PRIV_KEY ] && printf "Missing valid private key.\n" && exit 152
if [ ! -d $OUT_DIR ]; then
if [ -f $OUT_DIR ]; then
printf "$OUT_DIR exists and it's a file!\n"
exit 155
else
printf "Creating non-existing directory $OUT_DIR\n" && mkdir $OUT_DIR
fi
fi[ ! -f $TARGET ] && printf "$TARGET does not exist or is not a file" && exit 153
ORIG_DIR=$(dirname $TARGET)
ENC_KEY=$ORIG_DIR/secret.key.rsa.$ID
KEY=$OUT_DIR/secret.key.$ID[ ! -f $ENC_KEY ] && printf "Encrypted secret key $ENC_KEY is missing, \
it should be in the same path as $TARGET" && exit 154G="openssl rsautl -decrypt -inkey $PRIV_KEY -in $ENC_KEY -out $KEY"
[ $DEBUG -eq 1 ] && echo $G
eval $G
chmod 600 $KEYG1="dd if=$TARGET|openssl enc -d -blowfish -pass file:$KEY|tar xzf - -C $OUT_DIR"
[ $DEBUG -eq 1 ] && echo $G1 || echo "Decrypting ..."
eval $G1 && rm -f $KEY
TIME_END=$(date "+%s")
SECONDS_SPENT=$(expr $TIME_END - $TIME_START)printf "Decryption Summary:\n"
printf "\tData Location: %s\n" $OUT_DIR
printf "\tEncrypted Key: %s\n" $ENC_KEY
printf "\tTotal Time Elapsed: $SECONDS_SPENT seconds.\n"
exit 0
;;
*)
usage
exit 152
esac
> Во, нашёл метод. Через ж...у, но интересно :)
> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.То есть ключей 4 ? "Ты не выпендривайся, ты пальцем покажи," мол сосстругал на коленке асимметричного одностороннего Диффи-Хелмана...
>> Во, нашёл метод. Через ж...у, но интересно :)
>> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
>> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.
> То есть ключей 4 ? "Ты не выпендривайся, ты пальцем покажи," мол
> сосстругал на коленке асимметричного одностороннего Диффи-Хелмана...ну да четыре, RSA публик и приват + Blowfish пароль и Blowfish за RSA .
# Пара RSA
openssl genrsa -out private.pem 4096;
openssl rsa -in private.pem -out public.pem -outform PEM -pubout;# Ключ для blowfish
dd if=/dev/random of=BF.key bs=100 count=1;# out - ключ который отдаём.
openssl rsautl -encrypt -inkey public.pem -pubin -in BF.key -out BF_RSA.key;# Шифруем
echo 'Hello World!' | openssl enc -blowfish -pass file:BF.key | dd of=OUTPUT.bf;# --- На другой стороне
rm -f BF.key;
# Вынимаем ключ
openssl rsautl -decrypt -inkey private.pem -in BF_RSA.key -out BF.key;# Расшифровываем
dd if=OUTPUT.bf | openssl enc -d -blowfish -pass file:BF.key;
> Во, нашёл метод. Через ж...у, но интересно :)
> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.Павлинукс, таким манером все практические реализации стандарта openpgp, в том числе gnupg, действуют при отправке зашифрованного сообщения, разница лишь в алгоритмах шифрования, колеса-то не переоткрывай :)
GnuPG is a hybrid encryption software program in that it uses a combination of conventional symmetric-key cryptography for speed, and public-key cryptography for ease of secure key exchange, typically by using the recipient's public key to encrypt a session key which is only used once. This mode of operation is part of the OpenPGP standard and has been part of PGP from its first version.
>> Во, нашёл метод. Через ж...у, но интересно :)
>> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
>> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.
> Павлинукс, таким манером все практические реализации стандарта openpgp, в том числе gnupg,
> действуют при отправке зашифрованного сообщения, разница лишь в алгоритмах шифрования,
> колеса-то не переоткрывай :)Чего сказать-то хотел?! :)
У меня задача была, избавиться от интерактивности, всё на автопилоте.
>>> Во, нашёл метод. Через ж...у, но интересно :)
>>> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
>>> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.
>> Павлинукс, таким манером все практические реализации стандарта openpgp, в том числе gnupg,
>> действуют при отправке зашифрованного сообщения, разница лишь в алгоритмах шифрования,
>> колеса-то не переоткрывай :)
> Чего сказать-то хотел?! :)
> У меня задача была, избавиться от интерактивности, всё на автопилоте.Данные, шифруемые открытым ключом получателя итак шифруются симметрично (AES, Blowfish, что душе угодно). Выше я привел, это предусмотрено стандартом: This mode of operation is part of the OpenPGP standard and has been part of PGP from its first version.
>>>> Во, нашёл метод. Через ж...у, но интересно :)
>>>> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
>>>> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.
>>> Павлинукс, таким манером все практические реализации стандарта openpgp, в том числе gnupg,
>>> действуют при отправке зашифрованного сообщения, разница лишь в алгоритмах шифрования,
>>> колеса-то не переоткрывай :)
>> Чего сказать-то хотел?! :)
>> У меня задача была, избавиться от интерактивности, всё на автопилоте.
> Данные, шифруемые открытым ключом получателя итак шифруются симметричноПримеры давай симметричного шифрования BF/AES/IDEA,... с открытым ключом :D
>>>>> Во, нашёл метод. Через ж...у, но интересно :)
>>>>> Вся фишка в том, что имеющимся публичным ключом, шифруется ключ к BLOWFISH_у
>>>>> Естественно, обратно сначала дешифруем через RSA BF-ключ, а уже им сами данные.
>>>> Павлинукс, таким манером все практические реализации стандарта openpgp, в том числе gnupg,
>>>> действуют при отправке зашифрованного сообщения, разница лишь в алгоритмах шифрования,
>>>> колеса-то не переоткрывай :)
>>> Чего сказать-то хотел?! :)
>>> У меня задача была, избавиться от интерактивности, всё на автопилоте.
>> Данные, шифруемые открытым ключом получателя итак шифруются симметрично
> Примеры давай симметричного шифрования BF/AES/IDEA,... с открытым ключом :DПавлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers из The GNU Privacy Handbook:
A hybrid cipher uses both a symmetric cipher and a public-key cipher. It works by using a public-key cipher to share a key for the symmetric cipher. The actual message being sent is then encrypted using the key and sent to the recipient. Since symmetric key sharing is secure, the symmetric key used is different for each message sent. Hence it is sometimes called a session key.
Both PGP and GnuPG use hybrid ciphers. The session key, encrypted using the public-key cipher, and the message being sent, encrypted with the symmetric cipher, are automatically combined in one package. The recipient uses his private-key to decrypt the session key and the session key is then used to decrypt the message.
По-русски: информация шифруется AES, BF что_тебе_больше_нравится, ключ шифрования в свою очередь шифруется публичным ключом, всё складывается в контейнер и передаётся владельцу публичного ключа, который в свою очередь расшифровывает своим закрытым ключом ключ AES, BF или_что_там_у_тебя, которым расшифровывает содержащуюся в том же контейнере зашифрованную информацию. Доступно? :)
Это _стандарт_, Павлин! Не велосепидируй, всё уже придумали до тебя :)
> Павлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers
> из The GNU Privacy Handbook:Примеры то будут? :)
>> Павлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers
>> из The GNU Privacy Handbook:
> Примеры то будут? :)Там же:
gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
>>> Павлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers
>>> из The GNU Privacy Handbook:
>> Примеры то будут? :)
> Там же:
> gpg --output doc.gpg --encrypt --recipient blake@cyb.org docА где --symmetric ? А без пароля?
>>>> Павлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers
>>>> из The GNU Privacy Handbook:
>>> Примеры то будут? :)
>> Там же:
>> gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
> А где --symmetric ? А без пароля?Хых, Павлин, уел ты меня )) Всё. В последний раз! :) Вот картинка, специально для тебя искал!! (смотреть ту, что слева): http://jcetaglib.sourceforge.net/hybrid.jpg
Да, блочный шифр на картинке, это и есть твой симметричный шифр. Заметь! он в контейнере :)
>>>>> Павлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers
>>>>> из The GNU Privacy Handbook:
>>>> Примеры то будут? :)
>>> Там же:
>>> gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
>> А где --symmetric ? А без пароля?
> Хых, Павлин, уел ты меня )) Всё. В последний раз! :) Вот
> картинка, специально для тебя искал!! (смотреть ту, что слева): http://jcetaglib.sourceforge.net/hybrid.jpgНу а примеры-то будут? :)
и как тут gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc,
сказать что я хочу BF256 или AES128
>[оверквотинг удален]
>>>>>> из The GNU Privacy Handbook:
>>>>> Примеры то будут? :)
>>>> Там же:
>>>> gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
>>> А где --symmetric ? А без пароля?
>> Хых, Павлин, уел ты меня )) Всё. В последний раз! :) Вот
>> картинка, специально для тебя искал!! (смотреть ту, что слева): http://jcetaglib.sourceforge.net/hybrid.jpg
> Ну а примеры-то будут? :)
> и как тут gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc,
> сказать что я хочу BF256 или AES128--cipher-algo BLOWFISH или --cipher-algo AES (или AES192, или AES256)
>[оверквотинг удален]
>>>>>> Примеры то будут? :)
>>>>> Там же:
>>>>> gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
>>>> А где --symmetric ? А без пароля?
>>> Хых, Павлин, уел ты меня )) Всё. В последний раз! :) Вот
>>> картинка, специально для тебя искал!! (смотреть ту, что слева): http://jcetaglib.sourceforge.net/hybrid.jpg
>> Ну а примеры-то будут? :)
>> и как тут gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc,
>> сказать что я хочу BF256 или AES128
> --cipher-algo BLOWFISH или --cipher-algo AES (или AES192, или AES256)Во, сильвупле... А то развёл тут флуд на два часа. Маны ещё читать заставлял :)
---
Мож ещё знаешь как в работающий USB девайс команды посылать?
>>>>> Павлин, ей-богу, ну что ты клоуна из себя строишь. Глава Hybrid ciphers
>>>>> из The GNU Privacy Handbook:
>>>> Примеры то будут? :)
>>> Там же:
>>> gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
>> А где --symmetric ? А без пароля?
> Хых, Павлин, уел ты меня )) Всё. В последний раз! :) Вот
> картинка, специально для тебя искал!! (смотреть ту, что слева): http://jcetaglib.sourceforge.net/hybrid.jpg
> Да, блочный шифр на картинке, это и есть твой симметричный шифр. Заметь!
> он в контейнере :)Выше же дал. Делает именно этот контейнер )
> Надо сделать два ключа - секретный и не очень.
> Секретным шифрануть архив и отправить на болванке в путь.
> Открытый ключ заслать по почте, чтоб там расшифровали.А не проще было шифрануть длинным ключом (какой-нибудь .avi), а по почте прислать .torrent?
При этом создать юридический казус - что чем шифровали?
Кстати, чем бы проверить качество ключа из /dev/random ?---
Есть какой-то тест, точнее набор тестов, для оценки RANDOM SEQUENCE
--
Всё, нарыл - https://ru.wikipedia.org/wiki/%D0%A2%D0%...