thepgcrypto
모듈은 토토 사이트 순위 함수를 제공합니다.PostgreSQL.
이 모듈이 고려됩니다“신뢰할 수있는”생성
현재 데이터베이스의 권한.
pgcrypto
OpenSSL이 필요하며 PostgreSQL을 구축 할 때 OpenSSL 지원이 선택되지 않은 경우 설치되지 않습니다.
digest ()
#다이제스트 (데이터 텍스트, 텍스트 유형)는 BYTEA를 반환합니다
지정된 이진 해시를 계산합니다데이터
. 타입
사용할 알고리즘입니다. 표준 알고리즘은MD5
, SHA1
, SHA224
, SHA256
, SHA384
및SHA512
. 또한 모든 다이제스트 알고리즘OpenSSL지지대가 자동으로 픽업됩니다.
다각형 문자열로 다이제스트를 원한다면encode ()
결과. 예를 들어:
함수 생성 또는 교체 SHA1 (BYTEA) 텍스트를 $$로 반환합니다
hmac ()
#HMAC (데이터 텍스트, 키 텍스트, 유형 텍스트)를 반환합니다
해시 Mac을 계산합니다데이터
with key키
. 타입
digest ()
.
이것은와 유사합니다.digest ()
그러나 해시는 열쇠를 아는 것만 다시 계산할 수 있습니다. 이것은 데이터를 변경하고 해시를 일치하도록 변경하는 사람의 시나리오를 방지합니다.
키가 해시 블록 크기보다 큰 경우 먼저 해시되고 결과가 키로 사용됩니다.
함수crypt ()
및gen_salt ()
비밀번호 해싱 용으로 특별히 설계되었습니다.crypt ()
해싱 및gen_salt ()
알고리즘 매개 변수를 준비합니다.
알고리즘의crypt ()
다음과 같은 일반적인 MD5 또는 SHA1 해싱 알고리즘과 다릅니다 :
느린다. 데이터의 양이 너무 작기 때문에 이것은 무차별 대결 암호를 어렵게 만드는 유일한 방법입니다.
random value를 사용합니다.SALT, 동일한 암호를 가진 사용자가 토토 사이트 순위 된 암호가 다릅니다. 이것은 또한 알고리즘을 뒤집는 것에 대한 추가 방어입니다.
결과에 알고리즘 유형이 포함되어 있으므로 다른 알고리즘으로 해시 된 암호는 공존 할 수 있습니다.
그중 일부는 적응력이 있습니다. 즉, 컴퓨터가 더 빨라질 때 기존 암호와 비 호환성을 도입하지 않고도 알고리즘을 느리게 조정할 수 있습니다..
테이블 F.17crypt ()
기능.
표 F.17. 지원되는 알고리즘crypt ()
알고리즘 | 최대 비밀번호 길이 | 적응 형? | 소금 비트 | 출력 길이 | 설명 |
---|---|---|---|---|---|
BF |
72 | 예 | 128 | 60 | Blowfish-Based, Variant 2A |
MD5 |
무제한 | 아니오 | 48 | 34 | MD5 기반 Crypt |
XDES |
8 | 예 | 24 | 20 | 확장 DES |
des |
8 | 아니오 | 12 | 13 | 원래 Unix Crypt |
crypt ()
#crypt (비밀번호 텍스트, 소금 텍스트) 텍스트를 반환
암호 계산 (3)-스타일 해시비밀번호
. 새 비밀번호를 저장할 때 사용해야합니다.gen_salt ()
새로운 생성SALT
값. 비밀번호를 확인하려면 저장된 해시 값을 전달합니다.SALT
, 결과가 저장된 값과 일치하는지 여부를 테스트합니다.
새 비밀번호 설정 예 :
업데이트 ... set pswhash = crypt ( 'new password', gen_salt ( 'md5'));
인증의 예 :
select (pswhash = crypt ( 'Enthed Password', pswhash)))에서 PSWMATCH ...;
이것은 반환true
입력 된 암호가 올바른 경우.
gen_salt ()
#gen_salt (텍스트 유형 [, iter_count integer]) 텍스트를 반환
crypt ()
. 소금 끈도 말해crypt ()
사용할 알고리즘.
the타입
매개 변수 해싱 알고리즘을 지정합니다. 허용 된 유형은 다음과 같습니다.des
, XDES
, MD5
및BF
.
theiter_count
매개 변수를 사용하면 사용자가 반복 카운트를 지정할 수 있습니다. 카운트가 높을수록 비밀번호를 해시하는 데 더 많은 시간이 걸리므로 더 많은 시간이 걸립니다.iter_count
매개 변수가 생략되었으며 기본 반복 카운트가 사용됩니다. 허용 값iter_count
알고리즘에 의존하고에 표시됩니다.테이블 F.18.
테이블 F.18. 반복 카운트crypt ()
알고리즘 | 기본값 | Min | max |
---|---|---|---|
XDES |
725 | 1 | 16777215 |
BF |
6 | 4 | 31 |
forXDES
반복 카운트가 홀수 숫자 여야한다는 추가 제한이 있습니다.
적절한 반복 카운트를 선택하려면 원래 DES 암호가 해당 하드웨어에서 초당 4 개의 해시 속도를 갖도록 설계되었음을 고려하십시오. 초당 4 해시보다 느리면 유용성이 약화 될 수 있습니다.
테이블 F.19다른 해싱 알고리즘의 상대 속도에 대한 개요를 제공합니다. 이 표는 암호에 소문자 또는 하급 문자 및 숫자 만 포함되어 있다고 가정 할 때 8 문자 암호로 문자의 모든 조합을 시도하는 데 얼마나 많은 시간이 걸리는지를 보여줍니다.crypt-bf
항목, 슬래시 후 숫자는입니다.iter_count
매개 변수gen_salt
.
표 F.19. 해시 알고리즘 속도
알고리즘 | 해시/SEC | for[A-Z] |
for[A-Za-Z0-9] |
기간에 대한 기간MD5 HASH |
---|---|---|---|---|
crypt-bf/8 |
1792 | 4 년 | 3927 년 | 100k |
crypt-bf/7 |
3648 | 2 년 | 1929 년 | 50K |
crypt-bf/6 |
7168 | 1 년 | 982 년 | 25K |
crypt-bf/5 |
13504 | 188 일 | 521 년 | 12.5k |
crypt-md5 |
171584 | 15 일 | 41 년 | 1K |
crypt-des |
23221568 | 157.5 분 | 108 일 | 7 |
SHA1 |
37774272 | 90 분 | 68 일 | 4 |
MD5 (해시) |
150085504 | 22.5 분 | 17 일 | 1 |
참고 :
사용 된 기계는 인텔 모바일 코어 i3입니다.
crypt-des
및crypt-md5
알고리즘 번호는 John The Ripper v1.6.38에서 가져 왔습니다.-test
출력.
MD5 HASH
숫자는 mdcrack 1.2에서 나온 것입니다.
SHA1
숫자는 Lcrack-20031130-Beta에서 나온 것입니다.
crypt-bf
숫자는 1000 개 이상의 8 자 암호를 반복하는 간단한 프로그램을 사용하여 사용됩니다. 이렇게하면 다른 수의 반복이있는 속도가 표시 될 수 있습니다.John -test
13506 루프/SEC for 표시crypt-bf/5
. (결과의 매우 작은 차이는 사실에 따른 것입니다.crypt-bf
구현pgcrypto
John the Ripper에서 사용 된 것과 동일합니다.)
참고“모든 조합 시도”는 현실적인 운동이 아닙니다. 일반적으로 비밀번호 균열은 사전과 다양한 돌연변이를 모두 포함하는 사전의 도움으로 수행됩니다.
여기에서 함수는 OpenPGP (의 토토 사이트 순위 부분을 구현합니다.RFC 4880) 표준. 지원되는 대칭 키 및 공개 키 토토 사이트 순위입니다.
토토 사이트 순위 된 PGP 메시지는 두 부분으로 구성됩니다.패킷:
세션 키를 포함하는 패킷-대칭 키 또는 공개 키 토토 사이트 순위.
세션 키와 토토 사이트 순위 된 데이터가 포함 된 패킷.
대칭 키를 토토 사이트 순위 할 때 (즉, 암호) :
주어진 암호는 String2key (S2K) 알고리즘을 사용하여 해시됩니다. 이것은와 다소 비슷합니다.crypt ()
알고리즘-의도적으로 느리고 임의의 소금으로-전장 바이너리 키를 생성합니다.
별도의 세션 키가 요청되면 새로운 랜덤 키가 생성됩니다. 그렇지 않으면 S2K 키는 세션 키로 직접 사용됩니다.
S2K 키를 직접 사용하려면 S2K 설정 만 세션 키 패킷에 넣습니다. 그렇지 않으면 세션 키가 S2K 키로 토토 사이트 순위되어 세션 키 패킷에 넣습니다.
공개 키로 토토 사이트 순위 할 때 :
새로운 랜덤 세션 키가 생성됩니다.
공개 키를 사용하여 토토 사이트 순위되어 세션 키 패킷에 넣습니다.
두 경우 모두 토토 사이트 순위 할 데이터가 다음과 같이 처리됩니다.
선택적 데이터 조작 : 압축, UTF-8 로의 전환 및/또는 라인 목록의 변환.
데이터는 임의의 바이트 블록으로 접두사를 만듭니다. 이것은 임의의 IV를 사용하는 것과 같습니다.
무작위 접두사 및 데이터의 SHA1 해시가 추가되었습니다.
이 모든 것은 세션 키로 토토 사이트 순위되어 데이터 패킷에 배치됩니다.
pgp_sym_encrypt ()
#PGP_SYM_ENCRYPT (데이터 텍스트, PSW 텍스트 [, 옵션 텍스트])는 BYTEA를 반환합니다.
토토 사이트 순위데이터
대칭 PGP 키와 함께PSW
. 그만큼옵션
매개 변수는 아래에 설명 된대로 옵션 설정을 포함 할 수 있습니다.
pgp_sym_decrypt ()
#PGP_SYM_DECRYPT (MSG BYTEA, PSW 텍스트 [, 옵션 텍스트]) 텍스트를 반환합니다.
대칭 키 토토 사이트 순위 된 PGP 메시지를 해독합니다.
해독BYTEA
withpgp_sym_decrypt
허용되지 않습니다. 이것은 잘못된 문자 데이터를 출력하지 않습니다.pgp_sym_decrypt_bytea
괜찮습니다.
the옵션
매개 변수는 아래에 설명 된대로 옵션 설정을 포함 할 수 있습니다.
pgp_pub_encrypt ()
#PGP_PUB_ENCRYPT (데이터 텍스트, 키 바이트 [, 옵션 텍스트])는 bytea를 반환합니다.
토토 사이트 순위데이터
공개 PGP 키 포함키
. 이 기능을 비밀 키에게 제공하면 오류가 발생합니다.
the옵션
매개 변수는 아래에 설명 된대로 옵션 설정을 포함 할 수 있습니다.
PGP_PUB_DECRYPT ()
#pgp_pub_decrypt (msg bytea, key bytea [, psw text [, 옵션 텍스트]]) 텍스트를 반환합니다.
공개 키 토토 사이트 순위 메시지를 해독합니다.키
토토 사이트 순위에 사용 된 공개 키에 해당하는 비밀 키 여야합니다. 비밀 키가 암호로 보호 된 경우에서 암호를 제공해야합니다.PSW
. 비밀번호가 없지만 옵션을 지정하려면 빈 비밀번호를 제공해야합니다.
해독BYTEA
withPGP_PUB_DECRYPT
허용되지 않습니다. 이것은 잘못된 문자 데이터를 출력하지 않습니다.PGP_PUB_DECRYPT_BYTEA
괜찮습니다.
the옵션
매개 변수는 아래에 설명 된대로 옵션 설정을 포함 할 수 있습니다.
pgp_key_id ()
#pgp_key_id (bytea) 텍스트를 반환
pgp_key_id
PGP 공개 또는 비밀 키의 키 ID를 추출합니다. 또는 토토 사이트 순위 된 메시지가 주어지면 데이터를 토토 사이트 순위하는 데 사용 된 키 ID를 제공합니다.
2 개의 특별 키 ID를 반환 할 수 있습니다 :
Symkey
메시지는 대칭 키로 토토 사이트 순위됩니다.
Anykey
메시지는 공개 키 토토 사이트 순위되었지만 키 ID가 제거되었습니다. 즉, 어떤 비밀 키를 해독하는지 확인하기 위해 모든 비밀 키를 시도해야합니다.pgcrypto
그 자체는 그러한 메시지를 생성하지 않습니다.
다른 키는 동일한 ID를 가질 수 있습니다. 이것은 드물지만 정상적인 사건입니다.Anykey
.
Armor ()
, dearmor ()
#Armor (Data Bytea [, keys text [], value text []]) 텍스트를 반환합니다.
이 함수는 기본적으로 CRC 및 추가 서식이있는 Base64 인 PGP Ascii-Armor 형식으로 래프/포장 이진 데이터를 포장합니다..
키
및값
배열이 지정되어 있습니다.갑옷 헤더각 키/값 쌍의 장갑 형식에 추가됩니다. 두 배열 모두 단일 차원이어야하며 길이가 같아야합니다.
pgp_armor_headers
#PGP_ARMOR_HEADERS (데이터 텍스트, 키 아웃 텍스트, value out 텍스트) 레코드를 반환
pgp_armor_headers ()
갑옷 헤더 추출데이터
. 리턴 값은 키와 값의 두 열이있는 행 세트입니다.
옵션은 GNUPG와 유사하게 지명되었습니다. 옵션의 값은 동일한 부호 후에 제공되어야합니다.
pgp_sym_encrypt (data, psw, 'compress-algo = 1, cipher-algo = aes256')
제외한 모든 옵션Convert-CRLF
토토 사이트 순위 함수에만 적용하십시오. 해독 함수는 PGP 데이터에서 매개 변수를 얻습니다.
가장 흥미로운 옵션은 아마도입니다.compress-algo
및유니 코드 모드
. 나머지는 합리적인 불이행이 있어야합니다.
사용할 암호 알고리즘.
값 : BF, AES128, AES192, AES256, 3DES, CAST5
기본값 : AES128
적용 : pgp_sym_encrypt, pgp_pub_encrypt
사용할 압축 알고리즘. 사용 가능PostgreSQLZlib와 함께 지어졌습니다.
값 :
0- 압축 없음
1- 지퍼 압축
2-Zlib 압축 (= zip plus meta-data and block crcs)
기본값 : 0
적용 : pgp_sym_encrypt, pgp_pub_encrypt
압축 얼마. 더 높은 레벨은 더 작지만 느리게 압축됩니다.
값 : 0, 1-9
기본값 : 6
적용 : pgp_sym_encrypt, pgp_pub_encrypt
변환 여부\ n
in\ r \ n
토토 사이트 순위 할 때 및\ r \ n
to\ n
해독 할 때.RFC4880 텍스트 데이터를 사용하여 저장해야한다고 지정\ r \ n
라인 피드. 이것을 사용하여 완전히 RFC 호환 동작을 얻으십시오.
값 : 0, 1
기본값 : 0
PGP_SYM_ENCRYPT, PGP_PUB_ENCRYPT, PGP_SYM_DECRYPT, PGP_PUB_DECRYPT
SHA-1로 데이터를 보호하지 마십시오. 이 옵션을 사용하는 유일한 이유는 고대 PGP 제품과의 호환성을 달성하여 SHA-1 보호 패킷의 추가를 포기하는 것입니다.RFC4880. 최근 gnupg.org 및 pgp.com 소프트웨어가 잘 지원됩니다.
값 : 0, 1
기본값 : 0
적용 : pgp_sym_encrypt, pgp_pub_encrypt
별도의 세션 키 사용. 공개 키 토토 사이트 순위는 항상 별도의 세션 키를 사용합니다.
값 : 0, 1
기본값 : 0
적용 : pgp_sym_encrypt
사용할 S2K 알고리즘.
값 :
0- 소금없이.
1- 소금이 있지만 고정 된 반복 카운트.
3- 가변 반복 카운트.
기본값 : 3
적용 : pgp_sym_encrypt
사용할 S2K 알고리즘의 반복 수. 1024와 65011712 사이의 값이어야합니다.
기본값 : 65536과 253952 사이의 임의 값
적용 : pgp_sym_encrypt, s2k-mode = 3
별도의 세션 키를 토토 사이트 순위하는 데 사용할 암호.
값 : BF, AES, AES128, AES192, AES256
기본값 : Cipher-Algo 사용
적용 : pgp_sym_encrypt
텍스트 데이터를 데이터베이스 내부 인코딩에서 UTF-8 및 뒤로 변환할지 여부. 데이터베이스가 이미 UTF-8 인 경우 변환이 수행되지 않지만 메시지는 UTF-8으로 태그됩니다.
값 : 0, 1
기본값 : 0
적용 : pgp_sym_encrypt, pgp_pub_encrypt
새로운 키를 생성하려면 :
gpg-gen-key
선호하는 키 유형은입니다.“DSA 및 ELGAMAL”.
RSA 토토 사이트 순위의 경우 DSA 또는 RSA 부호 전용 키를 마스터로 작성한 다음 rsa 토토 사이트 순위 서브 키를 추가해야합니다gpg -Edit-Key
.
열쇠 목록 :
gpg-list-secret-keys
ascii-Armor 형식으로 공개 키를 내보내려면 :
gpg -a -export keyid> public.key
ascii-Armor 형식으로 비밀 키를 내보내려면 :
gpg -a-export-secret-keys keyid> incret.key
사용해야dearmor ()
이 키에서 PGP 함수에 제공하기 전에. 또는 이진 데이터를 처리 할 수 있으면 삭제할 수 있습니다-a
명령에서.
자세한 내용은 참조Man GPG
, GNU 개인 정보 핸드북및 기타 문서https://www.gnupg.org/.
서명에 대한 지원이 없습니다. 그것은 또한 토토 사이트 순위 서브 키가 마스터 키에 속하는지 여부를 확인하지 않음을 의미합니다.
마스터 키로 토토 사이트 순위 키를 지원하지 않습니다. 그러한 관행은 일반적으로 낙담하기 때문에 이것은 문제가되지 않아야합니다.
여러 하위 키에 대한 지원이 없습니다. 이것은 일반적인 관행이기 때문에 이것은 문제처럼 보일 수 있습니다.pgcrypto
, 그러나 사용 시나리오가 다소 다르기 때문에 새로운 것을 만듭니다.
이 함수는 데이터보다 암호를 실행합니다. PGP 토토 사이트 순위의 고급 기능이 없습니다.
사용자 키를 암호 키로 직접 사용합니다.
토토 사이트 순위 된 데이터가 수정되었는지 확인하기 위해 무결성 검사를 제공하지 않습니다.
사용자는 모든 토토 사이트 순위 매개 변수 자체를 관리 할 것으로 예상합니다. IV.
텍스트를 처리하지 않습니다.
따라서 PGP 토토 사이트 순위의 도입으로 원시 토토 사이트 순위 기능의 사용이 권장되지 않습니다.
Encrypt (Data Bytea, Key Bytea, Type Toint)는 Bytea를 반환합니다
|타입
. 의 구문타입
문자열은 :
알고리즘
[-
모드
] [/pad :
패딩
]
여기서알고리즘
중 하나입니다.
BF
- Blowfish
aes
-AES (Rijndael -128, -192 또는 -256)
및모드
중 하나입니다.
CBC
- 다음 블록은 이전 (기본값)에 따라 다릅니다.
ECB
- 각 블록은 별도로 토토 사이트 순위됩니다 (테스트 만 해당)
및패딩
중 하나입니다.
PKCS
- 데이터는 길이 (기본값) 일 수 있습니다
없음
- 데이터는 암호 블록 크기의 배수 여야합니다
예를 들어, 이들은 다음과 같습니다.
토토 사이트 순위 (데이터, 'fooz', 'bf')
inEncrypt_iv
및decrypt_iv
, TheIV
매개 변수는 CBC 모드의 초기 값입니다. ECB에 대해서는 무시됩니다.
gen_random_bytes (Count Integer)를 반환합니다
반환count
암호적으로 강한 무작위 바이트. 최대 1024 바이트는 한 번에 추출 될 수 있습니다.
gen_random_uuid () returns uuid
버전 4 (랜덤) UUID를 반환합니다. (쓸모없고,이 기능은 내부적으로라고합니다.PostgreSQL : 문서 : 17 : 9.14. 스포츠 토토 베트맨 기능같은 이름의.)
pgcrypto
주요 PostgreSQL의 결과에 따라 자체 구성구성
스크립트. 영향을 미치는 옵션은입니다.-with-zlib
및-with-ssl = elessl
.
Zlib로 컴파일되면 PGP 토토 사이트 순위 기능은 토토 사이트 순위하기 전에 데이터를 압축 할 수 있습니다.
pgcrypto
요구OpenSSL. 그렇지 않으면 건축 또는 설치되지 않습니다.
에 대해 컴파일 된 시점OpenSSL3.0.0 이상 버전에서 레거시 제공 업체를 활성화해야합니다.openssl.cnf
des 또는 blowfish와 같은 오래된 암호를 사용하기위한 구성 파일.
SQL의 표준과 마찬가지로, 인수 중 어느 것이면 모든 기능은 NULL을 반환합니다. 이것은 부주의 한 사용에 대한 보안 위험을 초래할 수 있습니다.
allpgcrypto
함수는 데이터베이스 서버 내부에서 실행됩니다. 즉, 모든 데이터와 암호가 사이에 이동한다는 것을 의미합니다.pgcrypto
및 클라이언트 응용 프로그램은 명확한 텍스트입니다. 따라서 당신은해야합니다 :
로컬로 연결하거나 SSL 연결을 사용하십시오.
시스템 및 데이터베이스 관리자를 신뢰합니다.
할 수 없다면 클라이언트 애플리케이션 내부에서 토토 사이트 순위하는 것이 좋습니다.
구현은 저항하지 않습니다사이드 채널 공격. 예를 들어, A에 필요한 시간pgcrypto
완료하기위한 암호 해독 함수는 주어진 크기의 암호 텍스트마다 다릅니다.
Marko Kreen<markokr@gmail.com
pgcrypto
다음 소스에서 코드를 사용합니다.
알고리즘 | 저자 | 소스 원점 |
---|---|---|
des crypt | David Burren 및 기타 | freebsd libcrypt |
MD5 Crypt | Poul-Henning Kamp | freebsd libcrypt |
Blowfish Crypt | Solar Designer | www.openwall.com |
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면