නව මුරපදය පෙර පැවති වචනයට සමාන බව ලිනක්ස් දැන ගන්නේ කෙසේද?


145

විවිධ ලිනක්ස් යන්ත්‍රවල පරිශීලක මුරපදයක් වෙනස් කිරීමට මම කිහිප වතාවක් උත්සාහ කළ අතර නව මුරපදය පැරණි එකට සමාන වූ විට, මෙහෙයුම් පද්ධතිය පැමිණිලි කළේ ඒවා බොහෝ සමාන බවයි.

මම නිතරම කල්පනා කළා, පද්ධතිය මෙය දන්නේ කෙසේද? මුරපදය හැෂ් ලෙස සුරකින බව මම සිතුවෙමි. මෙයින් අදහස් කරන්නේ පද්ධතියට නව මුරපදය සමානකම් සඳහා සංසන්දනය කිරීමට හැකි වූ විට පැරණි එක සත්‍ය පෙළ ලෙස සුරකින බවයි?


30
1 වන ඕෆ්: සරල පෙළ? නොමැත. (!) සුරකින ලද්දේ නම් ඔබ හැෂ් සුරකිමින් හැෂ් සංසන්දනය කරන්න. ලිනක්ස් වලදී එය නව මුරපදය සමඟ වත්මන් මුරපදය පරික්ෂා කරයි. මුරපද වෙනස් කිරීමේදී පරිශීලකයා විසින් දෙකම සපයනු ලැබේ.
රින්ස්වින්ඩ්

42
In රින්ස්වින්ඩ් නමුත් හැෂ් සංසන්දනය කිරීම සාර්ථක නොවන්නේ එක් අක්ෂර වෙනසක් නිසා සම්පූර්ණයෙන්ම වෙනස් හැෂ් එකක් ලැබිය යුතු බැවිනි
slhck

17
මෙයද බලන්න ෆේස්බුක් සරල පෙළ මුරපද ගබඩා කරන්නේද? මත තොරතුරු ආරක්ෂක ලද නව මුරපදය (පැරණි සඳහා සාමාන්ය අක්ෂර පෙළේ) පැරණි මුරපදය, හා සාමාන්ය අක්ෂර පෙළේ ඇති හෑෂ් පමණක් ලබා දී සමාන අනාවරණය කිරීමට වෙනත් ක්රම සඳහා.
බොබ්

21
පැරණි මුරපදයක් සහ සාමාන්‍ය මුරපදයක් අතර සමානකමක් තිබේදැයි ඔබට සැබවින්ම පරීක්ෂා කළ හැකිය. අළුත් එකට සමාන මුරපද ලැයිස්තුවක් ජනනය කරන්න, ඒවා සියල්ලම හෑෂ් කරන්න, සහ ලැබෙන හැෂ් පැරණි මුරපද හැෂ් සමඟ සසඳන්න. කිසියම් ගැලපීමක් නම්, එය සමාන ය.
BWG

2
WBWG: එය සුළු වශයෙන් සරල කිරීමකි - වර්තමාන හැෂිං යෝජනා ක්‍රම මඟින් හැෂ් ලුණු දමයි, එබැවින් පළමුව ඔබ පැරණි මුරපද හැෂ් වෙතින් ලුණු නිස්සාරණය කර ඔබේ සමාන හා නව මුරපද සඳහා එම ලුණු භාවිතා කිරීමට වග බලා ගන්න. (මම මෙය පෙන්වා දෙන්නේ ඒපීඅයි මගින් නිශ්චිත ලුණු බල කිරීමට ක්‍රමයක් හෙළි නොකිරීමට ඉඩ ඇති බැවිනි.)
උල්රිච් ෂ්වාස්

Answers:


156

භාවිතා කරන විට පැරණි හා නව මුරපදය සැපයීමට ඔබට අවශ්‍ය බැවින් passwdඒවා ධාවකයේ කොතැනක හෝ ලිවීමකින් තොරව සරල පෙළ, මතකයේ පහසුවෙන් සැසඳිය හැකිය.

ඇත්ත වශයෙන්ම ඔබගේ මුරපදය ගබඩා කර ඇති විට එය හෑෂ් කර ඇත, නමුත් එය සිදු වන තුරු, ඔබ ඔබේ මුරපදය ඇතුළත් කරන මෙවලම වෙනත් ඕනෑම වැඩසටහනකට STDIN වෙතින් කියවන අතරතුර ඔබේ යතුරුපුවරුවේ ඇතුළත් කළ දේට ප්‍රවේශ විය හැකිය.

මෙය PAM පද්ධතියේ අංගයක් වන අතර එය passwdමෙවලමෙහි පසුබිමෙහි භාවිතා වේ . නවීන ලිනක්ස් බෙදාහැරීම් මගින් PAM භාවිතා කරයි.

වඩාත් නිශ්චිතවම, pam_cracklibPAM සඳහා වන මොඩියුලයක් වන අතර එය දුර්වලතා කිහිපයක් මත පදනම්ව මුරපද ප්‍රතික්ෂේප කිරීමට ඉඩ සලසයි.

එය අනාරක්ෂිත යැයි සැලකිය හැකි මුරපද පමණක් නොවේ. මෙම මූල කේතය මුරපදයක් ඇති palindrome හෝ කුමක් සංස්කරණය දුර වචන දෙක අතර වේ ද යන්න උදා, පරීක්ෂා කළ හැක දේ විවිධ උදාහරණ ඇත. මුරපද ශබ්ද කෝෂ ප්‍රහාරයන්ට වඩා ප්‍රතිරෝධී කිරීම මෙහි අදහසයි.

මෙයද බලන්න pam_cracklibmanpage.


මගේ පිළිතුරේ වාර්තා වී ඇති තර්ක සමඟ ඔබේ පැහැදිලි කිරීම ගැලපෙන්නේ කෙසේද යන්න පිළිබඳ අදහස් ඔබට තිබේද? ධාරකය PAM දැන නොසිටින විට "passwd" යෙදුම විසින් ගනු ලබන වෙනස් ප්‍රවේශයන් දෙකක් තිබේද? PS: කිසිම විවේචකයෙක් නැහැ. මම පුදුම වෙමි (PAM, BTW, මගේ පළමු අනුමානය ලෙස ... ප්‍රභව කේතය අතුගා දැමීමට පෙර).
ඩේමියානෝ වර්සුලි

27
අවසාන මුරපද හතරෙන් ඔබ එකම හෝ සමාන මුරපදයක් භාවිතා කර ඇත්නම් ඔබව දැනුවත් කරන ආයතනික මුරපද නීති වඩාත් කරදරකාරී වේ.
නික් ටී

4
IckNickT එය (අවශ්‍යයෙන්ම) කරදරකාරී වන්නේ කෙසේද - ඔවුන්ට ඔබේ අන්තිම හැෂ් 4 සුරැකීමට නොහැකි වූ අතර, ඒ සෑම එකක්ම මෙම ප්‍රශ්නයට සමාන ආකාරයකින් ඔබේ යෝජිත නව එකක් සමඟ සසඳන්න.
neminem

1
emneminem "... හෝ ඊට සමාන"
නික් ටී

1
IckNickT අහ්, සෑහෙන තරම් සාධාරණයි, මන්ද මෙම විශේෂිත අවස්ථාවෙහිදී ඔබ සුරකින ලද හැෂ් එකකට වඩා මුරපදය වෙනස් කිරීමට පරිශීලකයාගේ ආදානය කරන “පැරණි මුරපදය” සමඟ සංසන්දනය කරයි. තවමත්, ඔබ හැකි hypothetically BWG, අදහසක් තවම අවම වශයෙන් සැබැවින් සරල වෙනස්කම් (එක් චරිතයක් ආදේශන, එක් චරිතයක් එකතු / ඉවත්, ආදිය) පරීක්ෂා කිරීම සඳහා මෙම ක්රමය භාවිතා කරන්න.
neminem

46

අවම වශයෙන් මගේ උබුන්ටු වල, “බොහෝ සමාන” පණිවිඩ එළියට එයි විට: "... අක්ෂරවලින් අඩකට වඩා වෙනස් ඒවා ...." (විස්තර සඳහා පහත බලන්න). @slhck පිළිතුරෙහි පැහැදිලිව විස්තර කර ඇති පරිදි PAM සහාය සඳහා ස්තූතියි.

PAM භාවිතා නොකරන වෙනත් වේදිකාවක් සඳහා, "බොහෝ සමාන" පණිවිඩ එන්නේ: "... අක්ෂරවලින් අඩකට වඩා වෙනස් ඒවා ...." (විස්තර සඳහා පහත බලන්න)

මෙම ප්‍රකාශය ඔබ විසින්ම තවදුරටත් පරීක්ෂා කර බැලීමට, ප්‍රභව කේතය පරීක්ෂා කළ හැකිය. මෙන්න කොහොමද.

"Passwd" වැඩසටහන passwd පැකේජයට ඇතුළත් කර ඇත:

verzulli@iMac:~$ which passwd
/usr/bin/passwd
verzulli@iMac:~$ dpkg -S /usr/bin/passwd
passwd: /usr/bin/passwd

අප විවෘත මූලාශ්‍ර තාක්‍ෂණයන් සමඟ කටයුතු කරන විට, අපට ප්‍රභව කේතයට අසීමිත ප්‍රවේශයක් ඇත. එය ලබා ගැනීම තරම් සරල ය:

verzulli@iMac:/usr/local/src/passwd$ apt-get source passwd

පසුව කේතයේ අදාළ කොටස සොයා ගැනීම පහසුය:

verzulli@iMac:/usr/local/src/passwd$ grep -i -r 'too similar' .
[...]
./shadow-4.1.5.1/NEWS:- new password is not "too similar" if it is long enough
./shadow-4.1.5.1/libmisc/obscure.c:     msg = _("too similar");

"Obscure.c" වෙත ඉක්මන් පරීක්‍ෂණයක් මඟින් මෙය ලබා දෙයි (මම අදාළ කේත කැබැල්ල පමණක් කපා අලවන්නෙමි):

static const char *password_check (
    const char *old,
    const char *new,
    const struct passwd *pwdp)
{
    const char *msg = NULL;
    char *oldmono, *newmono, *wrapped;

    if (strcmp (new, old) == 0) {
            return _("no change");
    }
    [...]
    if (palindrome (oldmono, newmono)) {
            msg = _("a palindrome");
    } else if (strcmp (oldmono, newmono) == 0) {
            msg = _("case changes only");
    } else if (similar (oldmono, newmono)) {
            msg = _("too similar");
    } else if (simple (old, new)) {
            msg = _("too simple");
    } else if (strstr (wrapped, newmono) != NULL) {
            msg = _("rotated");
    } else {
    }
    [...]
    return msg;
}

ඉතින්, දැන්, අපි දන්නවා පැරණි හා නව-එක් චෙක්පතක් මත පදනම් වූ "සමාන" ශ්‍රිතයක් දෙකම සමාන නම්. මෙන්න ස්නිපටය:

/*
 * more than half of the characters are different ones.
 */
static bool similar (const char *old, const char *new)
{
    int i, j;

    /*
     * XXX - sometimes this fails when changing from a simple password
     * to a really long one (MD5).  For now, I just return success if
     * the new password is long enough.  Please feel free to suggest
     * something better...  --marekm
     */
    if (strlen (new) >= 8) {
            return false;
    }

    for (i = j = 0; ('\0' != new[i]) && ('\0' != old[i]); i++) {
            if (strchr (new, old[i]) != NULL) {
                    j++;
            }
    }

    if (i >= j * 2) {
            return false;
    }

    return true;
}

මම සී කේතය සමාලෝචනය කර නැත. ශ්‍රිත අර්ථ දැක්වීමට මොහොතකට පෙර අදහස් දැක්වීම විශ්වාස කිරීමට මා සීමා විය :-)


PAM සහ NON-PAM දැනුවත් වේදිකා අතර වෙනස අර්ථ දක්වා ඇත්තේ “obscure.c” ගොනුව තුළ ය.

#include <config.h>
#ifndef USE_PAM
[...lots of things, including all the above...]
#else                           /* !USE_PAM */
extern int errno;               /* warning: ANSI C forbids an empty source file */
#endif                          /* !USE_PAM */

9
මෙය දිගු පිළිතුරක් වන අතර මුරපද හැෂ් ලෙස භාවිතා කරන විට එය පැරණි මුරපදයට සාපේක්ෂව සැසඳිය හැක්කේ කෙසේද යන ප්‍රශ්නයට කෙලින්ම පිළිතුරු නොදෙනු ඇත.
ජේම්ස්ඩ්ලින්

10
@jamesdlin: මුල් ප්රශ්නයට Rinzwind අදහස් සඳහන් පරිදි, කාරීව නැහැ නොවේ ඕනෑම භූමිකාව මේ කාරණය සම්බන්ධයෙන් සෙල්ලම්: ඔබ මුරපදය වෙනස් කිරීමට "passwd" විධාන නිකුත් වන විට, ඔබ "පැරනි" හා "අලුත්" මුරපදය දෙකම ලබා අවශ්යය. එබැවින් මුරපදය දෙකම එකවර සංසන්දනය කිරීමේදී / පරීක්ෂා කිරීමේදී "මුරපද" කේතයට කිසිදු ගැටළුවක් නොමැත (පැහැදිලි ස්වරූපයෙන්; කිසිසේත් හැෂ් නොවේ).
ඩේමියානෝ වර්සුලි

3
Am ඩමියානෝ වර්සුලි කෙසේ වෙතත්, මෙය ඇත්ත වශයෙන්ම ප්‍රශ්නයට ආමන්ත්‍රණය නොකරයි. ප්රශ්නය "නූල් දෙකක් සමාන දැයි පැවසීමට ඔබ භාවිතා කරන්නේ කුමන C කේතයද?" වෙනත් ඕනෑම දෙයකට මුරපද සඳහා එය හරියටම සමාන වේ. මුරපද පිළිබඳ සිත්ගන්නා කරුණ නම් ඒවා කිසි විටෙක සාමාන්‍ය පෙළෙහි ගබඩා නොවීමයි. මෙය "කුමන නිර්ණායක භාවිතා කරන්නේද සහ එය C හි සිදු කරන්නේ කෙසේද" යන්නට පිළිතුරු සපයයි, නමුත් එය "කුමන නිර්ණායක" සහ "මම C හි මෙය කරන්නේ කෙසේද" යන්න දිගු වේ. එය SO ප්‍රශ්නයක් මිස SU ප්‍රශ්නයක් නොවේ.
cpast

7
Am ඩැමියානෝ වර්සුලි සහ passwdපැරණි හා නව මුරපද ඉල්ලන කාරණය ඊට පිළිතුරයි . මෙම පිළිතුරේ ඉතිරි කොටස අදාල නොවේ.
ජේම්ස්ඩ්ලින්

3
+1 සඳහා සහ අතිශයින්ම අදාළ හා රසවත් පිළිතුර! මුරපදය සංසන්දනය කරන සත්‍ය කේතය සැබවින්ම සාමාන්‍ය පෙළ මත ක්‍රියාත්මක වන අතර අපේක්ෂා කළ පරිදි හැෂ් මත නොවේ.
නිකෝ

36

පිළිතුර ඔබ සිතනවාට වඩා සරල ය. ඇත්ත වශයෙන්ම, එය මැජික් ලෙස පාහේ සුදුසුකම් ලබයි, මන්ද ඔබ උපක්‍රමය පැහැදිලි කළ පසු එය නැති වී යයි:

$ passwd
Current Password:
New Password:
Repeat New Password:

Password changed successfully

ඔබගේ නව මුරපදය සමාන බව එය දනී ... මක්නිසාද යත් ඔබ පැරණි එක ටයිප් කළේ මීට මොහොතකට පෙර ය.


2
"... හෝ කැන්ඩි."
නික් ටී

1
මෝඩ හාවා, ට්‍රික්ස් ළමයින් සඳහා ය!
iAdjunct

1
එය පැහැදිලි නොකරන දෙය නම් එය ඔබගේ අතීත මුරපද දැනගත් විටය :) "මුරපදය මෑතකදී භාවිතා කර ඇත", එමඟින් එකම මුරපද කිහිපයක් ආයතනික පරිසරයක හුවමාරු වීම වළක්වයි.
ජුහා උන්ටිනන්

3
U ජුහා උන්ටිනන්: එය සත්‍යයකි, නමුත් අවසාන එන් හැෂ් මතක තබා ගැනීමෙන් එය හැසිරවිය හැකිය. "Nth මුරපදයට සමාන" අල්ලා ගැනීම පහසුය, එහි " Nth මුරපදයට සමාන " අමාරුයි. මා දන්නා තරමින්, මෙම පද්ධති පරික්ෂා කරන්නේ අවසාන මුරපදය හා සමාන බව පමණක් වන අතර, අන්තිම එන් සමඟ සමාන බව පරීක්ෂා කරයි. ඔවුන් අන්තිම එන් සමඟ සමානකම් තිබේදැයි පරීක්ෂා කරන්නේ නම් ... එය දැන් සිත්ගන්නා සුළු උපක්‍රමයක් නොවේ ද? ඔවුන් එය කරන්නේ කෙසේදැයි මට අදහසක් නැත.
කෝට් අම්මොන්

7

අනෙක් පිළිතුරු නිවැරදි වුවත්, මෙය ක්‍රියාත්මක කිරීම සඳහා ඔබට පැරණි මුරපදය සැපයීමට අවශ්‍ය නොවන බව සඳහන් කිරීම වටී!

ඇත්ත වශයෙන්ම, කෙනෙකුට ඔබ සැපයූ නව මුරපදයට සමාන මුරපදයක් ජනනය කළ හැකිය, ඒවා හෑෂ් කරන්න, ඉන්පසු මෙම හැෂ් කිසිවක් පැරණි එකට ගැලපේදැයි පරීක්ෂා කරන්න. මෙය එසේ නම්, නව මුරපදය පැරණි එකට සමානව විනිශ්චය කරනු ලැබේ! :)


2
මෙය සැබවින්ම මෙම ජයග්‍රහණය සාක්ෂාත් කර ගැනීමේ මාධ්‍යයක් වන අතර (බොහෝ වෙබ් අඩවි විසින් භාවිතා කරනු ලැබේ), නමුත් මෙම අවස්ථාවේදී සිදුවන්නේ එය නොවේ.
බ්‍රයන් එස්

එය ඉතා හොඳ උපක්‍රමයක්! ටිකක් වැඩිපුර පරිගණකමය තීව්‍ර, නමුත් දක්ෂයි!
Cort Ammon

අර්ථවත් චෙක්පතක් ලබා ගැනීමට හෝ බාහිර සම්පත් සමඟ සම්බන්ධ වීමට සමාන මුරපද කීයක් ජනනය කළ යුතුද යන්න පිළිබඳව ඔබ අවම වශයෙන් යම් තක්සේරුවක් ලබා දිය යුතුය. එසේ නොමැති නම් මෙය කළ හැකි විකල්පයක් පිළිබඳ අදහසක් මිස සනාථ කළ පිළිතුරක් නොවේ.
හයිඩ්

යමෙක් සිතිය හැකි නිර්ණායක මත රඳා පවතින හයිඩ්. උපරිම වශයෙන් අක්ෂර 3 ක් එකතු කර / ඉවත් කර / වෙනස් කර ඇත්නම් මට මුරපද සමාන වේ. එබැවින් සෑම අක්ෂරයක් සඳහාම හැෂ් 62 ක් (අපි අක්ෂර සංඛ්‍යා පමණක් භාවිතා කරන්නේ නම්) මුරපදයේ දිග ( n) සිට 3 ක කාල සංයෝජනයකි 62 * (n!)/(6 * (n - 3)!), එනම් අක්ෂර 12 ක් සඳහා දිගු මුරපද 13540 ට සමාන වේ. නමුත් යමෙකු වෙනස් දෙයක් ගැන සිතන්නේ නම් සමීකරණය නිෂ් less ල ය, එබැවින් කරදර වන්නේ ඇයි?
කිල්ලා

මෝඩ පිළිතුර, නමුත් තීක්ෂ්ණ බුද්ධිය කෙසේ වෙතත්. ඇයි මෝඩ? 1. ඔබට සිතාගත නොහැකි හැෂ් සංඛ්‍යාවක් ජනනය කිරීමට සිදුවේ. 2. එවැනි සැකසුම මුල් මුරපදයේ ආරක්ෂාව දුර්වල කරයි. යමෙක් එක් හැෂ් එකක් වෙනුවට සමාන මුරපද සියල්ලම හැෂ් ලබා ගත්තේ නම්, එය බිඳ දැමීමට ඔවුන්ට වඩා පහසු කාලයක් තිබේ.
රොක් ක්‍රල්ජ්

5

එක් අංගයක් ආවරණය නොවීය: මුරපද ඉතිහාසය. සමහර පද්ධති මේ සඳහා සහය දක්වයි. එය සිදු කිරීම සඳහා, එය මුරපදවල ඉතිහාසයක් තබා ඒවා වර්තමාන මුරපදය සමඟ සංකේතනය කරයි. ඔබ ඔබගේ මුරපදය වෙනස් කළ විට එය "පැරණි" මුරපදය භාවිතා කර ලැයිස්තුව විකේතනය කර සත්‍යාපනය කරයි. එය නව මුරපදයක් සැකසූ විට, එය නව මුරපදයෙන් ලබාගත් යතුරක් සමඟ සංකේතාත්මක ලැයිස්තුව (නැවත) සුරකිනු ඇත.

remember=NPAM හි ක්‍රියා කරන ආකාරය මෙයයි (ගබඩා කර ඇත /etc/security/opasswd). නමුත් වින්ඩෝස් සහ අනෙකුත් යුනික්ස් වෙළෙන්දෝ ද ඒ හා සමාන කාර්යයන් ඉදිරිපත් කරති.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.