본문 바로가기

디지털포렌식(Digital forensic)/암호스토리

[파일] 완벽한 비번 만드는 방법 4가지+10만 개의 샘플

반응형

출처: oceanpointins.com

비번은 호시탐탐 정보를 노리는 이들로부터 '정보'를 지키는 군대로 비유하면 최전방이다.

비번을 강력하게 만드는 4가지 방법을 소개한다.

1. 대문자와 소문자를 섞어서 사용한다.

알파벳은 26개다. 하지만 대소문자로 구분하면 26×2=52개가 된다.

아스키 코드값에서도 대문자 A와 소문자 a는 전혀 다른 값이다.

APPLE1234와 AppLe1234 둘 중에 어느 것이 뚫기 쉬울까?

꼭! 반드시! 대소문자를 섞어서 사용해라.

 

2.숫자, 기호, 공백(Space)도 포함한다.

AppLe1234 보다는 A@ppLe!1234가 비번으로써 기능성이 더 높다.

숫자, 기호, 공백을 섞어쓰면 비밀번호를 추측하기 어렵다. 

자주 사용하는 특수 문자는 기억하기도 쉽고 비밀번호 길이를 늘릴 수 있다.

특수기호는 ~`!@#$%^&*()-_+={}[]|\;:"<>,./? 으로 알파벳 대문자, 소문자와 혼용하여
사용할 경우에 경우의 수가 엄청나게 많아진다.
★단, 시스템에 따라 특수기호들 중에서 허용되는 것과 허용되지 않는 것이 있다.

 

3.자신만의 약어를 사용한다.

Apple, ApPLe,aPPle 든 결국 모두 다 apple라는 단어다.

어떤 방식이든지 추측할 수 있는 단어다.

하지만 APL aPL과 같이 사용하면 설명하지 않는 한 apple을 추측할 수 없다.

'내 강아지 이름은 포비다' "My dog name is Pobby"라는 비번을 사용한다면
MdniP와 같이 사용하는게 좋다.

 

4.문자를 숫자로 바꿔야 한다.

일반적으로 해커들은 암호를 알아내기 위해 무차별 대입 공격을 사용한다.
시작은 가장 일반적인 단어와 문구로 시작한다.
예를 들어 golden_group라는 비번이라면 o대신에 0을,l 대신에 1을, g대신에 9, p대신에 6을 사용한다.

이렇게 바꾼 암호는 901den_9r0u6이 된다.

 


아래는  C#을 사용하여 요구 사항에 따라 6자리에서 12자리의 비밀번호를 생성하는 코드다.
코드에서는 무작위로 문자열을 생성하고, 특수 문자(@, #, !, %, ^, &, *)를 적어도 하나 이상 포함하며,
o대신에 0을,l 대신에 1을, g대신에 9, p대신에 6을 사용한다.

 

ConsoleApp1.Zip
0.03MB

using System;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        // 생성할 비밀번호 개수
        int passwordCount = 30;

        // 특수 문자
        char[] specialChars = { '@', '#', '!', '%', '^', '&', '*' };

        // 사용 가능한 문자
        string availableChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        // 난수 생성기 초기화
        Random random = new Random();

        for (int i = 0; i < passwordCount; i++)
        {
            // 비밀번호 길이를 무작위로 선택 (6에서 12 사이)
            int passwordLength = random.Next(6, 13);

            StringBuilder passwordBuilder = new StringBuilder();

            // 비밀번호 생성
            for (int j = 0; j < passwordLength; j++)
            {
                // 무작위 문자 선택
                char randomChar = availableChars[random.Next(availableChars.Length)];

                // 문자 치환
                switch (randomChar)
                {
                    case 'o':
                        randomChar = '0';
                        break;
                    case 'l':
                        randomChar = '1';
                        break;
                    case 'g':
                        randomChar = '9';
                        break;
                    case 'p':
                        randomChar = '6';
                        break;
                }

                // 비밀번호에 추가
                passwordBuilder.Append(randomChar);
            }

            // 특수 문자 추가
            char specialChar = specialChars[random.Next(specialChars.Length)];
            int insertIndex = random.Next(passwordBuilder.Length);
            passwordBuilder.Insert(insertIndex, specialChar);

            // 생성된 비밀번호 출력
            Console.WriteLine(passwordBuilder.ToString());
        }
    }
}

결과(난수이기 때문에 사용자가 실행한 결과와는 다름)

아래의 첨부 파일은 위 코드를 응용해서 생성한
100,000개의 6자리~12자리 비밀번호들이다.
그대로 사용하기보다는 '약간 더 변형'해서 사용하기를 권한다.

★ 아래 예제를 보고 여러분이 현재 사용하는 비번이 상대적으로 쉬운 비밀번호임을 알았다면 지금 바꾸길.

passwords.txt
1.14MB

728x90