탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 관리: 보안 서비스 Oracle Solaris 11.1 Information Library (한국어) |
이 절에서는 대칭 키를 생성하는 방법, 파일 무결성을 위한 체크섬을 만드는 방법, 도청으로부터 파일을 보호하는 방법을 설명합니다. 이 절의 명령은 일반 사용자가 실행할 수 있습니다. 개발자는 이러한 명령을 사용하는 스크립트를 작성할 수 있습니다.
암호화 프레임워크는 파일을 보호하도록 도울 수 있습니다. 다음 작업 맵은 사용 가능한 알고리즘을 나열하고 암호화 기법으로 파일을 보호하기 위한 절차를 가리킵니다.
|
일부 응용 프로그램에서 통신을 암호화 및 해독하려면 대칭 키가 필요합니다. 이 절차에서 대칭 키를 만들고 저장합니다.
사이트에 난수 생성기가 있는 경우 생성기를 사용하여 키에 대한 난수를 생성할 수 있습니다. 이 절차에서는 사이트의 난수 생성기를 사용하지 않습니다.
다음 방법 중 하나를 사용합니다.
파일에 저장된 키의 이점은, /etc/inet/secret/ipseckeys 파일 또는 IPsec과 같은 응용 프로그램의 키 파일에서 사용할 키를 이 파일로부터 추출할 수 있다는 것입니다. 사용법 명령문은 인수를 보여줍니다.
% pktool genkey keystore=file ...genkey keystore=file outkey=key-fn [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ print=y|n ]
키가 저장된 파일 이름입니다.
모든 길이의 대칭 키의 경우 값이 generic입니다. 특정 알고리즘에 대해 aes, arcfour, des, 3des를 지정합니다.
비트 단위의 키 길이입니다. 숫자는 8로 나눌 수 있어야 합니다. des 또는 3des에 지정하지 마십시오.
터미널 창에 키를 인쇄합니다. 기본적으로 print의 값은 n입니다.
PKCS #11 키 저장소의 이점은, 레이블로 키를 검색할 수 있다는 것입니다. 이 방법은 파일을 암호화하고 해독하는 키에 유용합니다. 이 방법을 사용하기 전에 단계 1을 완료해야 합니다. 사용법 명령문은 인수를 보여줍니다. 키 저장소 인수 주위의 대괄호는 키 저장소 인수를 지정하지 않을 경우 키가 PKCS #11 키 저장소에 저장됨을 나타냅니다.
$ pktool genkey ...genkey [ keystore=pkcs11 ] label=key-label [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ token=token[:manuf[:serial]]] [ sensitive=y|n ] [ extractable=y|n ] [ print=y|n ]
사용자가 지정한 키의 레이블입니다. 레이블로 키 저장소에서 키를 검색할 수 있습니다.
모든 길이의 대칭 키의 경우 값이 generic입니다. 특정 알고리즘에 대해 aes, arcfour, des, 3des를 지정합니다.
비트 단위의 키 길이입니다. 숫자는 8로 나눌 수 있어야 합니다. des 또는 3des에 지정하지 마십시오.
토큰 이름입니다. 기본적으로 토큰은 Sun Software PKCS#11 softtoken입니다.
키의 민감도를 지정합니다. 값이 y이면 print=y 인수를 사용하여 키를 인쇄할 수 없습니다. 기본적으로 sensitive의 값은 n입니다.
키 저장소에서 키를 추출할 수 있는지 지정합니다. 키가 추출되지 않도록 하려면 n을 지정합니다.
터미널 창에 키를 인쇄합니다. 기본적으로 print의 값은 n입니다.
이 방법을 사용하기 전에 단계 1을 완료해야 합니다. 사용법 명령문은 인수를 보여줍니다.
$ pktool genkey keystore=nss ...genkey keystore=nss label=key-label [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ token=token[:manuf[:serial]]] [ dir=directory-path ] [ prefix=DBprefix ]
사용자가 지정한 키의 레이블입니다. 레이블로 키 저장소에서 키를 검색할 수 있습니다.
모든 길이의 대칭 키의 경우 값이 generic입니다. 특정 알고리즘에 대해 aes, arcfour, des, 3des를 지정합니다.
비트 단위의 키 길이입니다. 숫자는 8로 나눌 수 있어야 합니다. des 또는 3des에 지정하지 마십시오.
토큰 이름입니다. 기본적으로 토큰은 NSS 내부 토큰입니다.
NSS 데이터베이스에 대한 디렉토리 경로입니다. 기본적으로 directory는 현재 디렉토리입니다.
NSS 데이터베이스의 접두어입니다. 기본값은 접두어 없음입니다.
키를 저장한 위치에 따라 다음 명령 중 하나를 사용합니다.
% pktool list keystore=file objtype=key [infile=key-fn] Found n keys. Key #1 - keytype:location (keylen)
$ pktool list objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
예 12-1 pktool 명령을 사용하여 대칭 키 만들기
다음 예에서 사용자가 처음으로 PKCS #11 키 저장소를 만들고, 응용 프로그램에 대한 대형 대칭 키를 생성합니다. 마지막으로, 키가 키 저장소에 있는지 확인합니다.
# pktool setpin Create new passphrase:Type easily-remembered-hard-to-detect-password Re-enter new passphrase:Retype password Passphrase changed. % pktool genkey label=specialappkey keytype=generic keylen=1024 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list objtype=key Enter PIN for Sun Software PKCS#11 softtoken :Type password Found 1 keys. Key #1 - symmetric: specialappkey (1024 bits)
예 12-2 pktool 명령을 사용하여 DES 키 만들기
다음 예에서 DES 알고리즘의 보안 키를 만듭니다. 나중에 해독을 위해 로컬 파일에 키를 저장합니다. 명령이 400 사용 권한으로 파일을 보호합니다. 키를 만들 때 print=y 옵션이 터미널 창에 생성된 키를 표시합니다.
DES 방식은 64비트 키를 사용합니다. 키 파일을 소유한 사용자가 od 명령을 사용하여 키를 검색합니다.
% pktool genkey keystore=file outkey=64bit.file1 keytype=des print=y Key Value ="a3237b2c0a8ff9b3" % od -x 64bit.file1 0000000 a323 7b2c 0a8f f9b3
예 12-3 IPsec 보안 연관에 대한 대칭 키 만들기
다음 예에서 관리자가 수동으로 IPsec SA에 대한 키 관련 자료를 만들고 파일에 저장합니다. 그런 다음, 관리자가 /etc/inet/secret/ipseckeys 파일로 키를 복사하고 원본 파일을 삭제합니다.
먼저, 관리자가 IPsec 정책에 필요한 키를 만들고 표시합니다.
# pktool genkey keystore=file outkey=ipencrin1 keytype=generic keylen=192 print=y Key Value ="294979e512cb8e79370dabecadc3fcbb849e78d2d6bd2049" # pktool genkey keystore=file outkey=ipencrout1 keytype=generic keylen=192 print=y Key Value ="9678f80e33406c86e3d1686e50406bd0434819c20d09d204" # pktool genkey keystore=file outkey=ipspi1 keytype=generic keylen=32 print=y Key Value ="acbeaa20" # pktool genkey keystore=file outkey=ipspi2 keytype=generic keylen=32 print=y Key Value ="19174215" # pktool genkey keystore=file outkey=ipsha21 keytype=generic keylen=256 print=y Key Value ="659c20f2d6c3f9570bcee93e96d95e2263aca4eeb3369f72c5c786af4177fe9e" # pktool genkey keystore=file outkey=ipsha22 keytype=generic keylen=256 print=y Key Value ="b041975a0e1fce0503665c3966684d731fa3dbb12fcf87b0a837b2da5d82c810"
그런 다음, 관리자가 다음 /etc/inet/secret/ipseckeys 파일을 만듭니다.
## SPI values require a leading 0x. ## Backslashes indicate command continuation. ## ## for outbound packets on this system add esp spi 0xacbeaa20 \ src 192.168.1.1 dst 192.168.2.1 \ encr_alg aes auth_alg sha256 \ encrkey 294979e512cb8e79370dabecadc3fcbb849e78d2d6bd2049 \ authkey 659c20f2d6c3f9570bcee93e96d95e2263aca4eeb3369f72c5c786af4177fe9e ## ## for inbound packets add esp spi 0x19174215 \ src 192.168.2.1 dst 192.168.1.1 \ encr_alg aes auth_alg sha256 \ encrkey 9678f80e33406c86e3d1686e50406bd0434819c20d09d204 \ authkey b041975a0e1fce0503665c3966684d731fa3dbb12fcf87b0a837b2da5d82c810
ipseckeys 파일의 구문이 유효한지 확인한 후에 관리자가 원본 키 파일을 삭제합니다.
# ipseckey -c /etc/inet/secret/ipseckeys # rm ipencrin1 ipencrout1 ipspi1 ipspi2 ipsha21 ipsha22
관리자가 ssh 명령 또는 다른 보안 방식을 사용하여 ipseckeys 파일을 통신 시스템에 복사합니다. 통신 시스템에서 보호 사항이 반전됩니다. ipseckeys 파일의 첫번째 항목이 인바운드 패킷을 보호하고, 두번째 항목이 아웃바운드 패킷을 보호합니다. 통신 시스템에는 키가 생성되지 않습니다.
파일의 다이제스트를 계산할 때 다이제스트 출력을 비교하여 파일이 변조되지 않았는지 확인할 수 있습니다. 다이제스트는 원본 파일을 고치지 않습니다.
% digest -l md5 sha1 sha224 sha256 sha384 sha512
digest 명령으로 알고리즘을 제공합니다.
% digest -v -a algorithm input-file > digest-listing
다음 형식으로 출력을 표시합니다.
algorithm (input-file) = digest
파일의 다이제스트를 계산하는 데 사용할 알고리즘입니다. 단계 1의 출력에 나타난 대로 알고리즘을 입력합니다.
digest 명령에 대한 입력 파일입니다.
digest 명령에 대한 출력 파일입니다.
예 12-4 MD5 방식으로 다이제스트 계산
다음 예에서 digest 명령이 MD5 방식을 사용하여 전자 메일 첨부 파일에 대한 다이제스트를 계산합니다.
% digest -v -a md5 email.attach >> $HOME/digest.emails.05.07 % cat ~/digest.emails.05.07 md5 (email.attach) = 85c0a53d1a5cc71ea34d9ee7b1b28b01
-v 옵션을 사용하지 않으면 동봉한 정보 없이 다이제스트가 저장됩니다.
% digest -a md5 email.attach >> $HOME/digest.emails.05.07 % cat ~/digest.emails.05.07 85c0a53d1a5cc71ea34d9ee7b1b28b01
예 12-5 SHA1 방식으로 다이제스트 계산
다음 예에서 digest 명령이 SHA1 방식을 사용하여 디렉토리 목록을 제공합니다. 결과가 파일에 배치됩니다.
% digest -v -a sha1 docs/* > $HOME/digest.docs.legal.05.07 % more ~/digest.docs.legal.05.07 sha1 (docs/legal1) = 1df50e8ad219e34f0b911e097b7b588e31f9b435 sha1 (docs/legal2) = 68efa5a636291bde8f33e046eb33508c94842c38 sha1 (docs/legal3) = 085d991238d61bd0cfa2946c183be8e32cccf6c9 sha1 (docs/legal4) = f3085eae7e2c8d008816564fdf28027d10e1d983
메시지 인증 코드(또는 MAC)는 파일의 다이제스트를 계산하고 보안 키를 사용하여 다이제스트를 한층 더 보호합니다. MAC은 원본 파일을 고치지 않습니다.
% mac -l Algorithm Keysize: Min Max ----------------------------------- des_mac 64 64 sha1_hmac 8 512 md5_hmac 8 512 sha224_hmac 8 512 sha256_hmac 8 512 sha384_hmac 8 1024 sha512_hmac 8 1024
두 가지 옵션이 있습니다. 키 생성에 사용할 문장암호을 제공할 수 있습니다. 또는 키를 제공할 수 있습니다.
문장암호를 제공하는 경우 문장암호를 저장하거나 기억해야 합니다. 문장암호를 온라인으로 저장할 경우 본인만 문장암호 파일을 읽을 수 있어야 합니다.
키를 제공하는 경우 방식에 맞는 올바른 크기여야 합니다. pktool 명령을 사용할 수 있습니다. 절차 및 일부 예제는 pktool 명령을 사용하여 대칭 키를 생성하는 방법을 참조하십시오.
mac 명령으로 키를 제공하고 대칭 키 알고리즘을 사용합니다.
% mac [-v] -a algorithm [-k keyfile | -K key-label [-T token]] input-file
예 12-6 DES_MAC 및 문장암호로 MAC 계산
다음 예에서 DES_MAC 방식과 문장암호에서 파생된 키를 사용하여 전자 메일 첨부 파일이 인증됩니다. MAC 목록이 파일에 저장됩니다. 문장암호가 파일에 저장된 경우 사용자 이외의 다른 사람이 파일을 읽을 수 없어야 합니다.
% mac -v -a des_mac email.attach Enter passphrase: <Type passphrase> des_mac (email.attach) = dd27870a % echo "des_mac (email.attach) = dd27870a" >> ~/desmac.daily.05.07
예 12-7 MD5_HMAC 및 키 파일로 MAC 계산
다음 예에서 MD5_HMAC 방식과 보안 키를 사용하여 전자 메일 첨부 파일이 인증됩니다. MAC 목록이 파일에 저장됩니다.
% mac -v -a md5_hmac -k $HOME/keyf/05.07.mack64 email.attach md5_hmac (email.attach) = 02df6eb6c123ff25d78877eb1d55710c % echo "md5_hmac (email.attach) = 02df6eb6c123ff25d78877eb1d55710c" \ >> ~/mac.daily.05.07
예 12-8 SHA1_HMAC 및 키 파일로 MAC 계산
다음 예에서 SHA1_HMAC 방식과 보안 키를 사용하여 디렉토리 매니페스트가 인증됩니다. 결과가 파일에 배치됩니다.
% mac -v -a sha1_hmac \ -k $HOME/keyf/05.07.mack64 docs/* > $HOME/mac.docs.legal.05.07 % more ~/mac.docs.legal.05.07 sha1_hmac (docs/legal1) = 9b31536d3b3c0c6b25d653418db8e765e17fe07a sha1_hmac (docs/legal2) = 865af61a3002f8a457462a428cdb1a88c1b51ff5 sha1_hmac (docs/legal3) = 076c944cb2528536c9aebd3b9fbe367e07b61dc7 sha1_hmac (docs/legal4) = 7aede27602ef6e4454748cbd3821e0152e45beb4
예 12-9 SHA1_HMAC 및 키 레이블로 MAC 계산
다음 예에서 SHA1_HMAC 방식과 보안 키를 사용하여 디렉토리 매니페스트가 인증됩니다. 사용자의 PKCS #11 키 저장소에 결과가 놓입니다. 사용자가 초기에 pktool setpin 명령을 사용하여 키 저장소와 키 저장소의 암호를 만들었습니다.
% mac -a sha1_hmac -K legaldocs0507 docs/* Enter pin for Sun Software PKCS#11 softtoken:Type password
키 저장소에서 MAC을 검색하려면 사용자가 상세 정보 표시 옵션을 사용하고 키 레이블과 인증된 디렉토리의 이름을 제공합니다.
% mac -v -a sha1_hmac -K legaldocs0507 docs/* Enter pin for Sun Software PKCS#11 softtoken:Type password sha1_hmac (docs/legal1) = 9b31536d3b3c0c6b25d653418db8e765e17fe07a sha1_hmac (docs/legal2) = 865af61a3002f8a457462a428cdb1a88c1b51ff5 sha1_hmac (docs/legal3) = 076c944cb2528536c9aebd3b9fbe367e07b61dc7 sha1_hmac (docs/legal4) = 7aede27602ef6e4454748cbd3821e0152e45beb4
파일을 암호화할 때 원본 파일은 제거되거나 변경되지 않습니다. 출력 파일이 암호화됩니다.
encrypt 명령에 공통적인 오류 해결 방법은 예제 뒤의 절을 참조하십시오.
두 가지 옵션이 있습니다. 키 생성에 사용할 문장암호을 제공할 수 있습니다. 또는 키를 제공할 수 있습니다.
문장암호를 제공하는 경우 문장암호를 저장하거나 기억해야 합니다. 문장암호를 온라인으로 저장할 경우 본인만 문장암호 파일을 읽을 수 있어야 합니다.
키를 제공하는 경우 방식에 맞는 올바른 크기여야 합니다. pktool 명령을 사용할 수 있습니다. 절차 및 일부 예제는 pktool 명령을 사용하여 대칭 키를 생성하는 방법을 참조하십시오.
encrypt 명령으로 키를 제공하고 대칭 키 알고리즘을 사용합니다.
% encrypt -a algorithm [-v] \ [-k keyfile | -K key-label [-T token]] [-i input-file] [-o output-file]
파일을 암호화하는 데 사용할 알고리즘입니다. encrypt -l 명령의 출력에 나타난 대로 알고리즘을 입력합니다.
알고리즘이 지정된 길이의 키를 포함하는 파일입니다. encrypt -l 명령의 출력에 각 알고리즘의 키 길이가 비트 단위로 나열됩니다.
토큰 이름입니다. 기본적으로 토큰은 Sun Software PKCS#11 softtoken입니다. -K key-label 옵션을 사용할 때만 사용됩니다.
암호화하려는 입력 파일입니다. 이 파일은 명령에 의해 바뀌지 않습니다.
입력 파일의 암호화된 형태인 출력 파일입니다.
예 12-10 파일을 암호화하기 위한 AES 키 만들기
다음 예에서 사용자가 암호화 및 해독에 사용할 AES 키를 만들고 기존 PKCS #11 키 저장소에 저장합니다. 키가 존재하는지 확인하고 키를 사용할 수 있지만, 키 자체를 볼 수는 없습니다.
% pktool genkey label=MyAESkeynumber1 keytype=aes keylen=256 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list objtype=key Enter PIN for Sun Software PKCS#11 softtoken :<Type password> Found 1 key Key #1 - Sun Software PKCS#11 softtoken: MyAESkeynumber1 (256)
키를 사용하여 파일을 암호화하려면 레이블로 키를 검색합니다.
% encrypt -a aes -K MyAESkeynumber1 -i encryptthisfile -o encryptedthisfile
encryptedthisfile 파일을 해독하려면 레이블로 키를 검색합니다.
% decrypt -a aes -K MyAESkeynumber1 -i encryptedthisfile -o sameasencryptthisfile
예 12-11 AES 및 문장암호로 암호화 및 해독
다음 예에서 AES 알고리즘으로 파일이 암호화됩니다. 키가 문장암호에서 생성됩니다. 문장암호가 파일에 저장된 경우 사용자 이외의 다른 사람이 파일을 읽을 수 없어야 합니다.
% encrypt -a aes -i ticket.to.ride -o ~/enc/e.ticket.to.ride Enter passphrase: <Type passphrase> Re-enter passphrase: Type passphrase again
입력 파일 ticket.to.ride가 여전히 원본 형태로 존재합니다.
출력 파일을 해독하려면 파일을 암호화한 것과 동일한 문장암호 및 암호화 방식을 사용합니다.
% decrypt -a aes -i ~/enc/e.ticket.to.ride -o ~/d.ticket.to.ride Enter passphrase: <Type passphrase>
예 12-12 AES 및 키 파일로 암호화 및 해독
다음 예에서 AES 알고리즘으로 파일이 암호화됩니다. AES 방식은 128비트 또는 16바이트 키를 사용합니다.
% encrypt -a aes -k ~/keyf/05.07.aes16 \ -i ticket.to.ride -o ~/enc/e.ticket.to.ride
입력 파일 ticket.to.ride가 여전히 원본 형태로 존재합니다.
출력 파일을 해독하려면 파일을 암호화한 것과 동일한 키 및 암호화 방식을 사용합니다.
% decrypt -a aes -k ~/keyf/05.07.aes16 \ -i ~/enc/e.ticket.to.ride -o ~/d.ticket.to.ride
예 12-13 ARCFOUR 및 키 파일로 암호화 및 해독
다음 예에서 ARCFOUR 알고리즘으로 파일이 암호화됩니다. ARCFOUR 알고리즘은 8비트(1바이트), 64비트(8바이트) 또는 128비트(16바이트) 키를 수용합니다.
% encrypt -a arcfour -i personal.txt \ -k ~/keyf/05.07.rc4.8 -o ~/enc/e.personal.txt
출력 파일을 해독하려면 파일을 암호화한 것과 동일한 키 및 암호화 방식을 사용합니다.
% decrypt -a arcfour -i ~/enc/e.personal.txt \ -k ~/keyf/05.07.rc4.8 -o ~/personal.txt
예 12-14 3DES 및 키 파일로 암호화 및 해독
다음 예에서 3DES 알고리즘으로 파일이 암호화됩니다. 3DES 알고리즘에 192비트 또는 24바이트 키가 필요합니다.
% encrypt -a 3des -k ~/keyf/05.07.des24 \ -i ~/personal2.txt -o ~/enc/e.personal2.txt
출력 파일을 해독하려면 파일을 암호화한 것과 동일한 키 및 암호화 방식을 사용합니다.
% decrypt -a 3des -k ~/keyf/05.07.des24 \ -i ~/enc/e.personal2.txt -o ~/personal2.txt
일반 오류
다음 메시지는 encrypt 명령에 제공한 키가 사용 중인 알고리즘에서 허가되지 않음을 나타냅니다.
encrypt: unable to create key for crypto operation:(암호화 작업에 대한 키를 작성할 수 없습니다.) CKR_ATTRIBUTE_VALUE_INVALID
encrypt: failed to initialize crypto operation:(암호화 작업을 초기화하지 못했습니다.) CKR_KEY_SIZE_RANGE
알고리즘의 요구 사항을 충족하지 않는 키를 전달하면 더 좋은 키를 제공해야 합니다.
한가지 옵션은 문장암호를 사용하는 것입니다. 그러면 프레임워크가 요구 사항을 충족하는 키를 제공합니다.
두번째 옵션은 알고리즘이 수용하는 키 크기를 전달하는 것입니다. 예를 들어, DES 알고리즘에 64비트 키가 필요합니다. 3DES 알고리즘에 192비트 키가 필요합니다.