crypt

ëªì¹
     crypt — í¸ë© 문 ìí¸í

íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬
     Crypt Library (libcrypt, -lcrypt)

ìì
     <unistd.h> char * crypt(const char *key, const char *salt) const char *
     crypt_get_format(void) int crypt_set_format(const char *string)

í´ì¤
     crypt() í¨ìë, í¨ì¤ìëì í´ìí를 íí´, í¤ ê²ìì ìë를 ë¨ëíê² í기 ìí ì½ë를
     ë¶ê°í©ëë¤.  í´ìíìë ë¤ë¥¸ ìê³ ë¦¬ì¦ì ì¬ì©í  ìê° ììµëë¤.  íì¬ í¬í¨ëë
     ìê³ ë¦¬ì¦ì, NBS Data Encryption Standard (DES), MD5, Blowfish ìëë¤.  DES
     (ì´)ë Blowfish íì§ë§ ì¸ì¤í¨ ëê³  ìëì§ ì´ë¤ì§, ë, ëí´í¸ë¥¼ ë³ê²½í기 ìí´ì
     crypt_set_format() íì§ë§ ë²ì¨ ë¶ë ¤ ê°ê³  ìëì§ ì´ë¤ì§ì ìí´, ì¬ì©ëë
     ìê³ ë¦¬ì¦ì salt (모ëí ìí¸ í¬ë§· (Modular Crypt Format (MCF))ì ë°ë¦ëë¤) ì
     í¬ë§·ì ìì¡´í©ëë¤.

     crypt ì ìµì´ì ì¸ìë í´ìí를 ìí ë°ì´í° (íµìì í¨ì¤ìëìëë¤)ë¡, ë ìºë¦í°ë¡
     ì¢ë£íë ìºë¦í° ë¼ì¸ìëë¤.  2 ë²ì§¸ì ì¸ìë salt ë¡, ë¤ìì 3 ê° ì¤ ëªê°ì
     íììëë¤.

           Extended     ì¸ë ì¤ì½ì (“_”) ê·¸ë¦¬ê³  ììëë ê²½ì°, ì´ì ì í´ìë salt
                        ì í´ìë í¨ê», ë¤ìì ê°ì를 ì¤ëªíë¤ DES íì¥ íìì
                        ì¬ì©í©ëë¤.
           Modular      ìºë¦í° ë¼ì¸ “$digit$” ê·¸ë¦¬ê³  ììëë ê²½ì°, ë¤ìì
                        ê°ì를 ì¤ëªíë¤ ëª¨ëí ìí¸ í¬ë§· (MCF)ì ì¬ì©í©ëë¤.
           Traditional  ìì ì´ë ê²ìë í´ë¹íì§ ìë ê²½ì°, ì íµì ì¸ í¬ë§·
                        (Traditional Format) (ì)를 ìì í´, ìºë¦í° ë¼ì¸ ì ì²´
                        (ëë ìµì´ì ë¶ë¶)를 salt ë¡ì ì¬ì©í©ëë¤.

     ì´ë routineë ê³ì°ì ìê°ì´ 걸리ë ì¤ê³ê° ëì´ ììµëë¤.  Pentium 166/MMX ë¡
     ê°ë¨í íì¤í¸ë¥¼ íë©´(ì), DES ìí¸íììë, 1 CPU ì´ ë¹ ìí¸í를 ì½ 2640 í íí´,
     MD5 ìí¸íììë, 1 CPU ì´ ë¹ ìí¸í를 ì½ 62 í ííìµëë¤.

   DES íì¥ íì:
     ê±´ key (ì)ë 8 ìºë¦í°ë¡ë¶í° ëë 그룹ì ë¶í ë©ëë¤ (ë§ì§ë§ 그룹ìë ë
     ë°ì´í¸ê° ì±ì¸ ì ììµëë¤).  ê° ìºë¦í°ì íì 7 ë¹í¸ (그룹 ë§ë¤ 56 ë¹í¸)ê°,
     ë¤ìì ì¤ëªíëë¡(ë¯ì´) í´, DES í¤ë¥¼ ë§ë¤ê¸° ìí´ì(ë문ì) ì´ì©ë©ëë¤.  ìµì´ì
     그룹ì 56 ë¹í¸ë, DES ì´ì ì ì´ê¸°ì¹ìëë¤.  ê·¸ íì 그룹 ë§ë¤, íì¬ì DES
     ì´ì  ê·¸ê² ìì ê³¼ ê·¸ 그룹ì ë¹í¸ë¥¼ XOR íë ê²ì¼ë¡ ìí¸íí´, ë¤ìì DES
     ì´ì ë¡ í©ëë¤.

     salt ë 9 ìºë¦í°ì ë°°ì´ì´ë©°, ì¸ë ì¤ì½ìì ë¤ë¡ 4 ë°ì´í¸ì ë°ë³µ íìì 4
     ë°ì´í¸ì salt ë¡ë¶í° ë©ëë¤.  ì´ê²ë¤ì ì¸ì ê°ë¥ ìºë¦í°ë¡ encode ë©ëë¤.  6
     ë¹í¸ ë§ë¤ 1 ìºë¦í°ë¥¼ ëììì¼, ìµíì ë ìºë¦í°ë¥¼ ìµì´ë¡ í´, encode ë©ëë¤.  0
     ìì 63 ê¹ì§ì ê°ì ``. /0-9A-Za-z''ë¡ì encode ë©ëë¤.  ì´ê²ì ìí´ count (ì)ê³¼
     salt ì ê°ê° 24 ë¹í¸ë¥¼ ì¬ì©í  ìê° ììµëë¤.

     salt í DES ìê³ ë¦¬ì¦ì ëí´, 16777216 ë°©ë² ëë 4096 ë°©ë² (ì¦, 24 ë¹í¸ ëë
     12 ë¹í¸) ìì 1 ë°©ë²ì´ë¼ê³  íë ë¶ê·ì¹ì±ì ëìí©ëë¤ ( salt ì ë¹í¸ i íì§ë§
     ì¤ì ëì´ ìë ê²½ì°, DES E-Box ì¶ë ¥ì¤ì ë¹í¸ i (ì)ê³¼ ë¹í¸ i+24 (ì´)ê°
     êµíë©ëë¤) .

     DES ì´ì 를 ì¬ì©í´, 64ë¹í¸ì ì ìì count í DES 를 ë°ë³µí´ ì ì©í´
     ìí¸íí©ëë¤.  ëë ¤ì£¼ì´ì§ë ê°ì, ë ìºë¦í°ë¡ ì¢ë£íë¤ ìºë¦í° ë¼ì¸ì¼ë¡, 길ì´ë
     20 ë°ì´í¸ ëë 13 ë°ì´í¸ (ì ë ìºë¦í°ê° ëí´ì§ëë¤)ë¡, salt ì íì, encode ë 64
     ë¹í¸ì ìí¸í를 ê³ìë ê²ì¼ë¡ 구ì±ë©ëë¤.

   모ëí ìí¸:
     salt ê° ìºë¦í° ë¼ì¸ $digit$ (ì¼)ë¡ë¶í° ììëë ê²½ì°ë, 모ëí ìí¸ í¬ë§·
     (MCF)ì´ ì¬ì©ë©ëë¤.  digit (ì)ë ìí¸í ìì ì´ë ìê³ ë¦¬ì¦ì´ ì¬ì©ëëì§ë¥¼
     ëíëëë¤.  ê·¸ ë¤ì í í°ì´ ì¤ì ì salt ë¡ì ìí¸íì ì´ì©ë©ëë¤.  salt ì 길ì´ë 16
     ìºë¦í°ì ì íëê³  ììµëë¤.  ì´ê²ì, ëë ¤ì£¼ë ì¶ë ¥ì 길ì´ë _PASSWORD_LEN ë¡
     ì íëê³  ì기 ë문ìëë¤.  salt ë ë ìºë¦í°ë ë¬ë¬ 기í¸ë¥¼ ë§ë¯¸ì ë íìê°
     ììµëë¤.  ë¬ë¬ 기í¸ì ë¤ì ìºë¦í°ë ì´ì§¸ì ì ê² ë¬´ìë©ëë¤.

     íì¬ ìí¬í¸íë ìê³ ë¦¬ì¦ì,

           1.   MD5
           2.   Blowfish

     ì´ì¸ì ìí¸í í¬ë§·ì ì©ì´íê² ì¶ê°í  ì ììµëë¤.  salt ì ìë¡ì ë¤ìì ê²ì´ ììµëë¤.

           $3$thesalt$rest

   Traditional ìí¸í:
     ì¬ì©ëë ìê³ ë¦¬ì¦ì, crypt_set_format() íì§ë§ ë²ì¨ ë¶ë ¤ ê°ê³  ìëì§ ìëì§,
     ê¸ë¡ë² ëí´í¸ í¬ë§·ì´ ë²ì¨ ì§ì ëì´ ìëì§ ìëì§ì ìì¡´í©ëë¤.  ê¸ë¡ë² ëí´í¸ê°
     미리 ì§ì ëì´ ìëì§, crypt_set_format() ê·¸ë¦¬ê³  무ìì¸ê° ë¤ë¥¸ í¬ë§·ì
     ì¤ì ëì´ ìëì§, ê·¸ ì´ë 쪽ë ìë ê²½ì°, í¸ìì ëí´í¸ í¬ë§·ì´ ì¬ì©ë©ëë¤.
     íì¬ë¡ìë, ì´ê²ì, DES 를 ì¬ì©í  ì ìë¤ë©´ DES ì, ê·¸ë ì§ ìì¼ë©´ MD5 ê°
     ë©ëë¤.

     salt 를 ì´ë»ê² ì´ì©í ê¹ë í´ìíì ìê³ ë¦¬ì¦ì ìì¡´í©ëë¤.  ìµê³ ì 결과를
     ì»ê¸° ìí´ì(ë문ì), ì ì´ë 2 ìºë¦í°ì salt 를 ì§ì í´ ì£¼ì¸ì.

     crypt_get_format() í¨ìë íì¬ ì¬ì©íê³  ìë ìê³ ë¦¬ì¦ì ëíë´ë ì ì ìºë¦í° ë¼ì¸ì
     ëë ¤ì¤ëë¤.  ì í¨í ê°ì, ‘des’, ‘blf’, ‘md5’ ìëë¤.

     crypt_set_format() í¨ìë ì§ì íë¤ string ì ë°ë¼, ëí´í¸ encode í¬ë§·ì
     ì¤ì í©ëë¤.

     ê¸ë¡ë² ëí´í¸ í¬ë§·ì, /etc/auth.conf íì¼ë¡, crypt_default ìì±ì ì¬ì©í´
     ì¤ì í  ìê° ììµëë¤.

ë°íê°
     crypt() (ì)ë, ì²ë¦¬ê° ì±ê³µíì ê²½ì°, ìí¸íë ê°ì ê°ë¦¬í¤ë í¬ì¸í°ë¥¼
     ëë ¤ì¤ëë¤.  ì²ë¦¬ê° ì¤í¨íì ê²½ì°, NULL 를 ëë ¤ì¤ëë¤.  주ì: ì´ê²ì íµìì
     ê±°ëì´ ìëëë¤.  AT&T ì crypt() (ì)ë íì ìºë¦í° ë¼ì¸ì ê°ë¦¬í¤ë í¬ì¸í°ë¥¼
     ëë ¤ì¤ëë¤.

     crypt_set_format() (ì)ë, 주ì´ì§ encode í¬ë§·ì´ ì ë¹íë©´, 1 ì ëë ¤ì¤ëë¤.
     ê·¸ ì´ì¸ì ê²½ì°, ê° 0 ì´ ëë ¤ì£¼ì´ì§ëë¤.

ê´ë ¨ í목
     login(1), passwd(1), auth_getval(3), cipher(3), getpass(3), auth.conf(5),
     passwd(5)

ë²ê·¸
     crypt() í¨ìë ì ì  ë°ì´í°ìì í¬ì¸í°ë¥¼ ëë ¤ì¤ëë¤.  ê·¸ë¦¬ê³ , ì´íì crypt()
     ì í¸ì¶ì ê°ì ë°ì´í°ë¥¼ ë³ê²½í©ëë¤.  crypt_set_format() ë ì´ì ê°ì´ ì ì
     ë°ì´í°ë¥¼ ë³ê²½í©ëë¤.

ìì¬
     ë¡í°ë¥¼ ì±ì©íë¤ crypt() í¨ìë, Version 6 AT&T UNIX ê·¸ë¦¬ê³  ë±ì¥íìµëë¤.
     íì¬ì ì¤íì¼ì crypt() (ì)ë, Version 7 AT&T UNIX ê·¸ë¦¬ê³  ì²ì ë±ì¥íìµëë¤.

     DES ì¹ìì ì½ë (FreeSec 1.0)ë, ìë©ë¦¬ì¹´ í©ì¤êµë§ì¼ë¡ ì¬ì©í  ì ìë¤ NetBSD
     libcrypt ìí¸í íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬ì ëí´ì, ê·¸ë¬í ì¥í´ê° ìë ì¹íì¼ë¡ì
     ìë©ë¦¬ì¹´ í©ì¤êµì ë°ìì ê°ë°ëììµëë¤.

ì ì
     ìëë David Burren <davidb@werj.com.au> ì ìí´ ì°ì¬ì¡ìµëë¤.  ê·¸ íì ì¶ê°,
     ê°±ì ì, Poul-Henning Kamp, Mark R V Murray, Kris Kennaway, Brian Feldman,
     Paul Herman Niels Provos ì ìí´ íí´ì¡ìµëë¤.