인증에 비밀번호를 사용하는 시스템은 액세스 권한을 얻기 위해 입력 한 비밀번호를 확인할 수있는 방법이 있어야합니다. 유효한 암호가 단순히 시스템 파일이나 데이터베이스에 저장되는 경우 시스템에 대한 충분한 액세스 권한을 얻은 공격자는 모든 사용자 암호를 얻어 공격 대상 시스템의 모든 계정 및 사용자가 동일한 암호를 사용하는 다른 시스템에 대한 액세스 권한을 부여합니다. 유사한 암호. 이 위험을 줄이는 한 가지 방법은 암호 자체가 아니라 각 암호의 암호화 해시 만 저장하는 것입니다. SHA (Secure Hash Algorithm) 시리즈와 같은 표준 암호화 해시는 되돌리기가 매우 어렵 기 때문에 해시 값을 확보 한 공격자는 직접 암호를 복구 할 수 없습니다. 그러나 해시 값을 알고 있으면 공격자가 오프라인에서 추측을 빠르게 테스트 할 수 있습니다. 암호 해독 프로그램은 도용 된 암호 해시에 대해 많은 시험 암호를 테스트 할 수있는 널리 사용 가능합니다.
컴퓨팅 기술의 개선으로 추측 된 암호를 테스트 할 수있는 속도가 계속 증가하고 있습니다. 예를 들어, 2010 년에 Georgia Tech Research Institute는 GPGPU를 사용하여 훨씬 빠르게 암호를 해독하는 방법을 개발했습니다. Elcomsoft는 2007 년 8 월 빠른 암호 복구를 위해 일반 그래픽 카드 사용을 발명했으며 곧 미국에서 해당 특허를 출원했습니다. 2011 년에는 그 당시 고급 그래픽 프로세서를 사용하여 표준 데스크톱 컴퓨터에서 초당 최대 112,000 개의 암호를 테스트 할 수 있다고 주장하는 상용 제품이 출시되었습니다. 이러한 장치는 하루 만에 6 자의 단일 케이스 암호를 해독합니다. 비슷한 GPU가있는 사용 가능한 컴퓨터 수에 비례하여 추가 속도 향상을 위해 작업을 여러 컴퓨터에 배포 할 수 있습니다. 계산하는 데 비교적 오랜 시간이 걸리는 특수 키 확장 해시를 사용하여 추측이 발생할 수있는 속도를 줄입니다. 키 확장을 사용하는 것이 모범 사례로 간주되지만 많은 일반적인 시스템에서는 그렇지 않습니다.
빠른 추측이 가능한 또 다른 상황은 암호를 사용하여 암호화 키를 형성하는 경우입니다. 이러한 경우 공격자는 추측 한 암호가 암호화 된 데이터를 성공적으로 디코딩하는지 신속하게 확인할 수 있습니다. 예를 들어 한 상용 제품은 초당 103,000 개의 WPA PSK 암호를 테스트한다고 주장합니다.
암호 시스템이 암호의 해시 만 저장하는 경우 공격자는 일반적인 암호 변형 및 모든 암호에 대한 해시 값을 미리 계산할 수 있습니다. 특정 길이보다 짧은 암호를 사용하여 해시를 얻은 후 암호를 매우 빠르게 복구 할 수 있습니다. 미리 계산 된 매우 긴 암호 해시 목록은 레인보우 테이블을 사용하여 효율적으로 저장할 수 있습니다. 이 공격 방법은 해시와 함께 암호화 솔트라고하는 임의의 값을 저장하여 방지 할 수 있습니다. 솔트는 해시를 계산할 때 암호와 결합되므로 레인보우 테이블을 미리 계산하는 공격자는 각 암호에 대해 가능한 모든 솔트 값과 함께 해시를 저장해야합니다. 이것은 솔트가 32 비트 숫자와 같이 충분히 큰 범위를 가지고 있다면 불가능 해집니다. 안타깝게도 일반적으로 사용되는 많은 인증 시스템은 솔트를 사용하지 않으며 이러한 여러 시스템에 대해 인터넷에서 레인보우 테이블을 사용할 수 있습니다.
암호 강도의 척도로 엔트로피 편집
정보 이론의 개념 인 비트 단위로 측정되는 정보 엔트로피 측면에서 암호 강도를 지정하는 컴퓨터 산업. 확실하게 암호를 찾는 데 필요한 추측 수 대신 해당 숫자의 밑이 2 인 로그가 제공됩니다. 이는 일반적으로 암호의 “엔트로피 비트”수라고합니다. 정보 엔트로피로. 이렇게 계산 된 42 비트의 엔트로피를 가진 암호는 무작위로 선택된 42 비트 문자열만큼 강력합니다. 다시 말해, 엔트로피가 42 비트 인 암호는 무차별 대입 검색 중에 모든 가능성을 소진 시키려면 242 (4,398,046,511,104) 번의 시도가 필요합니다. 따라서 암호의 엔트로피를 1 비트 늘리면 필요한 추측 수가 두 배가되어 공격자의 작업이 두 배 더 어려워집니다. 평균적으로 공격자는 올바른 암호를 찾기 전에 가능한 암호 수의 절반을 시도해야합니다.
Random passwordsEdit
임의 암호는 임의 선택을 사용하여 일부 기호 집합에서 가져온 지정된 길이의 기호 문자열로 구성됩니다. 각 기호가 동일하게 선택 될 가능성이있는 프로세스입니다. 기호는 문자 집합의 개별 문자 (예 : ASCII 문자 집합), 발음 가능한 암호를 형성하도록 설계된 음절 또는 단어 목록의 단어 일 수 있습니다. ).
임의 암호의 강도는 기본 숫자 생성기의 실제 엔트로피에 따라 달라집니다. 그러나 이들은 종종 진정한 무작위가 아니라 의사 난수입니다.공개적으로 사용 가능한 많은 암호 생성기는 제한된 엔트로피를 제공하는 프로그래밍 라이브러리에있는 난수 생성기를 사용합니다. 그러나 대부분의 최신 운영 체제는 암호 생성에 적합한 암호 학적으로 강력한 난수 생성기를 제공합니다. 일반 주사위를 사용하여 임의의 암호를 생성하는 것도 가능합니다. 더 강력한 방법을 참조하십시오. 임의의 암호 프로그램은 종종 결과 암호가 로컬 암호 정책을 준수하는지 확인할 수 있습니다. 예를 들어 항상 문자, 숫자 및 특수 문자를 혼합하여 생성합니다.
N 개의 가능한 기호 집합에서 길이 L의 기호 문자열을 무작위로 선택하는 프로세스에 의해 생성 된 암호의 경우 가능한 암호의 수는 기호의 수를 L, 즉 NL로 올림으로써 찾을 수 있습니다. L 또는 N을 늘리면 생성 된 암호가 강화됩니다. 정보 엔트로피로 측정되는 임의 암호의 강도는 암호의 각 기호가 독립적으로 생성된다고 가정 할 때 가능한 암호 수의 밑이 2 인 로그 또는 log2입니다. 따라서 임의 암호의 정보 엔트로피 H는 다음 공식으로 제공됩니다.
H = log 2 NL = L log 2 N = L 로그 N 로그 2 {\ displaystyle H = \ log _ {2} N ^ {L} = L \ log _ {2} N = L {\ log N \ over \ log 2}}
여기서 N은 가능한 기호의 수이고 L은 암호의 기호 수입니다. H는 비트 단위로 측정됩니다. 마지막 표현식에서 log는 임의의 염기 일 수 있습니다.
기호 세트 | 기호 개수 N | 기호 H 당 엔트로피 |
---|---|---|
아라비아 숫자 (0–9) (예 : PIN) | 10 | 3.322 비트 |
16 진수 (0–9, A–F) (예 : WEP 키) | 16 | 4.000 비트 |
대소 문자 구분없는 라틴 알파벳 (a–z 또는 A–Z) | 26 | 4.700 비트 |
대소 문자 구분없는 영숫자 (a–z 또는 A–Z, 0–9) | 36 | 5.170 비트 |
대소 문자 구분 라틴 알파벳 (a–z, A–Z) | 52 | 5.700 비트 |
케이스 민감한 영숫자 (a–z, A–Z, 0–9) | 62 | 5.954 비트 |
모든 ASCII 인쇄 가능 문자 공백 제외 | 94 | 6.555 비트 |
모든 Latin-1 보충 문자 | 94 | 6.555 비트 |
모든 ASCII 인쇄 가능 문자 | 95 | 6.570 비트 |
모든 확장 ASCII 인쇄 가능 문자 | 218 | 7.768 비트 |
바이너리 (0–255 또는 8 비트 또는 1 바이트) | 256 | 8.000 비트 |
Diceware 단어 목록 | 7776 | 워드 당 12.925 비트 |
이진 바이트는 일반적으로 두 개의 16 진수를 사용하여 표현됩니다. 문자.
N 기호 집합에서 무작위로 가져온 암호를 사용하여 원하는 강도 H를 달성하는 데 필요한 길이 L을 찾으려면 다음을 계산합니다.
L = H log 2 N {\ displaystyle L = {H \ over \ log _ {2} N}}
반올림 다음으로 큰 정수까지.
다음 표는이 공식을 사용하여 공통 기호 세트에 대해 원하는 비밀번호 엔트로피를 얻기 위해 실제로 무작위로 생성 된 비밀번호의 필수 길이를 표시합니다.
원하는 비밀번호 entropy H |
아랍어 숫자 |
16 진수 | 케이스 구분 안함 | 대소 문자 구분 | 모든 ASCII | 모든 확장 ASCII |
Diceware 단어 목록 |
||
---|---|---|---|---|---|---|---|---|---|
라틴어 알파벳 |
알파- 숫자 |
라틴어 알파벳 |
알파- 숫자 |
인쇄 가능한 문자 | |||||
8 비트 (1 바이트) | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 단어 |
32 비트 (4 바이트) | 10 | 8 | 7 | 7 | 6 | 6 | 5 | 5 | 3 워드 |
40 비트 (5 바이트 ) | 13 | 10 | 9 | 8 | 8 | 7 | 7 | 6 | 4 워드 |
64 비트 (8 바이트) | 20 | 16 | 14 | 13 | 12 | 11 | 10 | 9 | 5 워드 |
80 비트 (10 바이트) | 25 | 20 | 18 | 16 | 15 | 14 | 13 | 11 | 7 워드 |
96 비트 (12 바이트) | 29 | 24 | 21 | 19 | 17 | 17 | 15 | 13 | 8 워드 |
128 비트 (16 바이트) | 39 | 32 | 28 | 25 | 23 | 22 | 20 | 17 | 10 단어 |
160 비트 (20 바이트) | 49 | 40 | 35 | 31 | 29 | 27 | 25 | 21 | 13 워드 |
192 비트 (24 바이트) | 58 | 48 | 41 | 38 | 34 | 33 | 30 | 25 | 15 워드 |
224 비트 (28 바이트) | 68 | 56 | 48 | 44 | 40 | 38 | 35 | 29 | 18 워드 |
256 비트 (32 바이트) | 78 | 64 | 55 | 50 | 45 | 43 | 39 | 33 | 20 단어 |
사람이 생성 한 비밀번호 수정
사람들은 달성 능력이 부족한 것으로 악명이 높습니다. 만족스러운 암호를 생성하기에 충분한 엔트로피. 50 만 명의 사용자를 대상으로 한 한 연구에 따르면 평균 암호 엔트로피는 40.54 비트로 추정되었습니다. 일부 무대 마술사는 청중이 만든 임의의 선택 (예 : 숫자)을 추론하여 사소한 방법으로 이러한 무능력을 이용합니다.
따라서 3 백만 개가 넘는 8 자 암호에 대한 분석에서 에서 문자 “e”는 150 만 회 이상 사용 된 반면 문자 “f”는 25 만 회만 사용되었습니다. 균일 한 분포는 각 문자가 약 90 만 번 사용되었을 것입니다. 가장 많이 사용되는 숫자는 “1”이고 가장 일반적인 문자는 a, e, o 및 r입니다.
사용자는 암호를 구성 할 때 더 큰 문자 집합을 거의 사용하지 않습니다. 예를 들어, 2006 년 MySpace 피싱 계획에서 얻은 해킹 결과에 따르면 34,000 개의 암호가 나타 났으며이 중 8.3 % 만 대소 문자, 숫자 및 기호를 혼합하여 사용했습니다.
전체 ASCII 문자 집합 사용과 관련된 최대 강도 ( 숫자, 대소 문자 혼합 문자 및 특수 문자)는 가능한 각 암호의 가능성이 동일 할 경우에만 달성됩니다. 이것은 모든 암호에 여러 문자 클래스 각각의 문자, 아마도 대문자 및 소문자, 숫자 및 영숫자가 아닌 문자를 포함해야 함을 시사하는 것 같습니다. 실제로 이러한 요구 사항은 암호 선택의 패턴이며 공격자의 “작업 요소”(Claude Shannon의 용어로)를 줄일 수 있습니다. 이것은 암호 “강도”의 감소입니다. 더 나은 요구 사항은 온라인 사전, 이름 목록 또는 모든 주 (미국) 또는 국가 (EU)의 번호판 패턴에있는 단어를 포함하지 않도록 암호를 요구하는 것입니다. 패턴 화 된 선택이 필요한 경우 사람은 문자 대문자, 하나 또는 두 개의 숫자 추가 및 특수 문자와 같이 예측 가능한 방식으로 사용할 가능성이 있습니다. 이러한 예측 가능성은 임의의 암호에 비해 암호 강도의 증가가 미미하다는 것을 의미합니다.
NIST Special Publication 800-63-2Edit
NIST Special Publication 800-63 (2004 년 6 월) (개정판 2)은 사람이 생성 한 암호의 엔트로피를 근사화하는 계획을 제안했습니다.
이 체계를 사용하면 대문자와 영문자가 아닌 문자가 없거나 두 문자 집합 중 하나만 포함 된 8 자의 사람이 선택한 암호는 18 비트 엔트로피를 갖는 것으로 추정됩니다. NIST 간행물은 개발 당시 실제 암호 선택에 대한 정보가 거의 없었 음을 인정합니다. 새로 사용 가능한 실제 데이터를 사용하여 사람이 선택한 암호 엔트로피에 대한 이후 연구는 NIST 체계가 사람이 선택한 암호의 엔트로피 추정에 유효한 메트릭을 제공하지 않음을 보여주었습니다. SP 800-63의 2017 년 6 월 개정 (개정 3)은이 접근 방식을 삭제합니다.
사용성 및 구현 고려 사항 편집
국가 키보드 구현이 다양하기 때문에 인쇄 가능한 ASCII 문자 94 개를 모두 사용할 수있는 것은 아닙니다. 어디에나. 이것은 로컬 컴퓨터의 키보드를 사용하여 원격 시스템에 로그인하려는 해외 여행자에게 문제를 일으킬 수 있습니다. 키보드 레이아웃을 참조하십시오. 태블릿 컴퓨터 및 스마트 폰과 같은 많은 휴대용 기기는 특수 문자를 입력하기 위해 복잡한 교대 순서 또는 키보드 앱 스와핑이 필요합니다.
인증 프로그램은 암호에 허용되는 문자에 따라 다릅니다. 일부는 대소 문자 차이를 인식하지 못하고 (예 : 대문자 “E”는 소문자 “e”와 동일하게 간주 됨) 다른 기호는 일부 다른 기호를 금지합니다. 지난 수십 년 동안 시스템은 암호에 더 많은 문자를 허용했지만 여전히 제한이 있습니다. 시스템은 또한 허용되는 최대 암호 길이에 따라 다릅니다.
실제적으로 암호는 최종 사용자에게 합리적이고 기능적 일뿐만 아니라 의도 된 목적에 충분히 강력해야합니다. 기억하기 너무 어려운 암호는 잊어 버릴 수 있으므로 종이에 기록 될 가능성이 더 높으며 일부는 보안 위험을 고려합니다. 반대로 사용자가 도움없이 암호를 기억하도록 강요하면 취약한 암호 만 수용 할 수 있으므로 보안 위험이 커진다고 주장하는 사람들도 있습니다. Bruce Schneier에 따르면 대부분의 사람들은 지갑이나 지갑 보안에 능숙하며 이는 서면 암호를 저장하기에 “좋은 장소”입니다.