PDA

View Full Version : Protecţia proprietăţii intelectuale generează...



gessle
02-11-09, 14:02
Elemente de bază
Costul unui modul sau sistem electronic nu mai depinde in ziua de azi de preţul componentelor electronice (de partea materială) decat intr-o măsură mai mică.
Proprietatea intelectuală (IP) din acest modul constituită din: noutatea aplicaţiei, metodele şi algoritmii folosiţi, softul implementat pentru a le realiza pe acestea, structura hardware-ului etc., devine in tot mai multe aplicaţii partea valoroasă a modulului. Cu alte cuvinte proprietatea intelectuală devine elementul de bază al economiei moderne şi totodată aceasta trebuie protejată intens de piraterie, plagiat sau atacuri din afara sistemului.
Atat metodele de comunicaţie moderne: RF (comunicaţie radio), Comunicaţie prin Satelit, Comunicaţie pe Cablu, Comunicaţie optică, ş.a. cat şi Internetul au creat şi inlesnit calea de acces către proprietatea intelectuală făcand-o pe aceasta extrem de vulnerabilă. Faptul că un produs final aduce profit numai dacă acesta este vandut şi distribuit la caţi mai mulţi utilizatori duce implicit la răspandirea lui şi in mainile duşmanului sau a răufăcătorilor. Protecţia proprietăţii intelectuale din produse devine o problemă majoră de rezolvarea căreia depinde beneficiul şi bunăstarea firmelor şi ţărilor respective.

Metode de atac asupra IP in electronică
Proprietatea intelectuală in electronică constă in proiectul de hardware (adică din structura unui modul/sistem electronic constituit din componente elctronice şi interconectarea dintre ele) şi din programele memorate in acest modul/sistem. Cu ajutorul acestor programe modulul/sistemul electronic işi execută funcţia aplicativă. Datorită faptului că modulele/sistemele electronice s-au standardizat cu timpul in ceea ce priveşte structura lor, proiectul de hardware nu mai reprezintă nimic nou şi este folosit de majoritatea inginerilor de proiectare ca un bun intelectual mai mult sau mai puţin comun fără a mai reprezenta ceva nou demn de atacuri din partea concurenţei. Proprietatea intelectuală, ideea cea nouă, care deosebeşte produsul cel nou de celelalte mai vechi constă din algoritmul aplicativ programat in memoria modulului/sistemului. Deci atacul asupra proprietăţii intelectuale vizează in special memoria de program a modulului/sistemului. Metodele de atac asupra memoriei modulelor electronice sunt următoarele:
- atacul fizic
- ascultarea in secret
- generare de eroare fatală
- atac la adresa softului
Atacul fizic constă in mare in corodarea carcasei circuitului integrat in care se află memoria de program şi citirea directă a conţinutului memoriei după refacerea siguranţelor de protecţie la citire prin expunere la raze UV(ultra violete).
Ascultarea in secret se referă la transformarea campurilor electromagnetice emise de un monitor, de un microfon (in cazul telefoanelor mobile de exemplu) sau de un microcontroler in semnale citibile, inregistrand algoritmii folosiţi sau pur şi simplu informaţiile transmise.
Generarea de eroare fatală este o metodă distructivă de atac prin care se scoate modulul/sistemul din funcţie prin introducerea unui virus sau a unei supratensiuni distructive.
Atacul la adresa softului foloseşte una din interfeţele de comunicare ale modulului/sistemului pentru a penetra in interiorul său evitand barierele de protecţie şi manipuland apoi algoritmii aplicaţiei.
Ultimile trei metode sunt mult mai uşor de aplicat decat atacul fizic, iar atacul asupra softului poate rămane chiar mult timp neobservat.
Atacatorul poate citi şi copia conţinutul memoriei fără a fi observat sau poate manipula algoritmii programaţi in interesul său.

Metode generale de protecţie a IP
Aplicaţiile, metodele şi algoritmii se pot proteja prin patente. Plagiatul unui patent este deseori greu de dovedit, in special atunci cand patentul a fost uşor modificat şi patentat intr-o nouă formă. De asemenea, trebuie ţinut cont de faptul că softul unei aplicaţii nu poate fi patentat. El trebuie insă protejat deoarece conţine o investiţie considerabilă şi deseori o pondere mare in structura de preţ a produsului.
Un patent nu poate să evite atat folosirea unei idei patentate, uşor modificate cat şi accesul la IP-ul altora cu posibilitatea de a genera erori fatale sau chiar autodistrugerea sistemului. O altă metodă de protecţie a IP sau/şi de control al accesului care este folosită de mai mult timp este metoda “password”-ului sau a “pin”-ului, o cheie alfanumerică. Această metodă are dezavantajul că password/pin-ul poate fi descifrat de un alt computer care incearcă toate variantele posibile ale acestei chei alfanumerice intr-un timp limitat. Este cunoscut faptul că hackeri din diferite ţări, inclusiv Romania, au accesat date secrete ale unor bănci internaţionale sau ale Pentagonului. Ba chiar unii hackeri, folosind atacuri la adresa softului unor bănci au manipulat acest soft in aşa fel incat au transferat sume importante de bani din contul altora pe contul lor. Metoda password/pin-ului este şi o metodă scumpă deoarece fiecare password/pin uitat provoacă costuri considerabile in sistem.
Din considerentele de mai sus metodele moderne de protecţie se bazează atat pe un proces de identificare şi autentificare cat şi in final pe controlul şi limitarea accesului la date şi algoritmi. Aceste sisteme sunt mai complexe, dar şi mai eficiente decat cele de pană acum.
Motivele pentru care in perioada următoare se vor proiecta noi sisteme de protecţie se referă la:

- efectuarea de tranzacţii la valori mari şi foarte mari in condiţii de siguranţă şi controlul accesului la date importante sau/şi secrete;
- respectarea unor norme internaţionale ca SOX, HIPAA, FFIEC etc. a căror listă se tot extinde;
- apărarea de atacuri frauduloase;
- reducerea costurilor din cauza dezavantajelor folosirii sistemului actual de password/pin-uri;
- atragerea de noi clienţi şi consumatori pe baza siguranţei tranzacţiilor şi a comunicaţiei la distanţă.

Metodele şi aparatele moderne care oferă o protecţie mult mai ridicată a IP şi un control mult mai eficient al accesului sunt:

1 Token-ul USB
Este un aparat de mărimea unui “stick” de memorie care odată conectat pe interfaţa USB la sistem autentifică dreptul de acces la softul şi datele sistemului. Are avantajul de a fi uşor şi portabil in acelaşi timp, de a putea fi folosit in multe aplicaţii de securizare. Dezavantajul acestuia este că cere instalarea unui soft corespunzător in sistem.

2 Smart Cardul
Are forma unui card de credit şi conţine un microcontroler care face operaţii criptografice. Pe langă operaţiile de verificare şi autentificare acesta activează şi diferiţi algorimti criptografici, adică de codare/decodare complexă a datelor. Smart Cardul posedă o memorie sigură care poate conţine atat date secrete ale clientului cat şi coduri de acces ale acestuia. Unele tipuri se pot adapta sistemului şi codifica informaţiile schimbate cu acesta după cerinţe. Nivelul de securizare oferit de smard card-uri este foarte ridicat, sunt uşor de transportat (in portmoneu) şi asigură multiple cerinţe de protecţie. Smart Card-ul este metoda de protecţie şi securizare care se foloseşte in Sistemele Publice Securizate (PKI=Public *** Infrastructure). Dezavantajele sunt că necesită o instalare soft in prealabil şi pot fi folosite numai impreună cu un cititor de carduri, care de obicei nu este portabil.

3 Token-ul USB bazat pe smart card
Este aparatul care combină avantajele celor două aparate descrise anterior. Posedă nivelul de securizare al smart card-urilor, dar poate fi conectat la sistem printr-o interfaţă USB ceea ce inlătură necesitatea unui cititor de card-uri.

4 Token-ul cu un singur password (OTP)
Aceste aparate generează un singur password/pin (OTP = One Time Password) pe care utilizatorul il introduce in sistem al cărui server de acces autentifică identitatea utilizatorului. Password/pin-ul este generat pe baza unei reguli stabilite in comun intre token şi serverul de acces al sistemului. Are avantajul mobilităţii, este simplu de folosit şi nu necesită instalarea unui soft corespunzător. Dezavantajele sunt date de faptul că poate fi folosit numai in comun cu un server de acces, are un domeniu limitat de utilizare şi este alimentat la baterie.

5 Token-ul hibrid
Token-ul hibrid este un token USB bazat pe smart card care oferă şi posibilitatea generării unui singur password/pin. Hard-ul smart card-ului pe care il conţine ii oferă atat interfaţa USB cat şi posibilitatea generării unui OTP. Aceste token-uri prezintă toate avantajele sistemelor anterioare: mobilitate, fără instalaţie soft, utilizare in aplicaţii de securitate multiple, utilizare in sisteme de identificare personală etc. Dezavantajele dispar aproape complet.

6 Token-ul Soft
Token-ul Soft nu necesită o parte de “hardware” separată dar nu este foarte sigur la atacuri externe, are un domeniu de aplicabilitate limitat şi necesită un server de autentificare.

Firma MSC-Mibatron vă oferă o serie de produse moderne special proiectate pentru protecţia proprietăţii intelectuale sau/şi controlul accesului la date importante respectiv confidenţiale. In primul rand se recomandă a folosi in astfel de proiecte circuitele integrate din familia Atmel AT88SA.
Din această familie face parte circuitul Atmel AT88SA102S , proiectat special pentru aplicaţii criptografice şi autentificare criptografică. Prin intermediul unui cuvant de 23 de biţi format din siguranţe care pot fi arse (fuses) de către client pentru a personaliza circuitul, a-i determina starea sau a programa consumul de putere dorit.
El poate genera de asemenea un număr serial unic de 48 de biţi pe baza algoritmului criptografic ultramodern SHA256 (Secure Hash Algorithm), care defineşte un OTP. Cu ajutorul unei interfeţe seriale, monoliniare de mare viteză poate comunica cu orice micrcontroler prin interfaţa sa UART sau printr-un pin de intrare/ieşire (General I/O Pin). In afară de AT88SA102S există şi o serie de memorii nevolatile de tip Atmel AT88SCXXX de diferite capacităţi care folosesc aceeaşi metodă criptografică ca şi circuitul Atmel folosit la scrierea şi citirea datelor. Datele memorate in acest fel in memorii sunt practic imposibil de descifrat.
Circuitele criptografice Atmel descrise mai sus oferă siguranţă maximă in aplicaţiile criptografice şi de autentificare datorită folosirii algoritmului SHA256. Acest algoritm se bazează pe funcţiile Hash transpuse in diferite variante ale algoritmului SHA (Secure Hash Algorithm), funcţii criptografice introduse prima dată de NSA (National Security Agency) şi apoi standardizate de NIST (National Institute of Standards and Technology) din Statele Unite ale Americii. Primul algoritm Hash, numit SHA-0, a fost publicat de NIST in 1993 respectiv varianta lui mai avansată, numită SHA-1, in 1995. In decursul anilor ce au urmat s-a dovedit că algoritmul SHA-1 este vulnerabil la anumite atacuri (side-channel attacks). Ulterior au fost dezvoltate funcţiile SHA-2 cum ar fi de exemplu SHA256 (de 32 de biţi) şi SHA512 (de 64 de biţi). NIST impune folosirea algoritmilor SHA-2 incepand cu anul 2010 la toate agenţiile federale din SUA. Utilizarea acestor algoritmi este impusă de lege in SUA in toate domeniile de PKI (Public *** Infrastructure) sau in alte domenii de securitate a informaţiei şi a proprietăţii intelectuale. Algoritmul SHA256 implementat in familia Atmel AT88SA foloseşte chei criptografice in mai multe variante decat atomi se află in soarele sistemului nostru planetar ceea ce face orice decodificare nedorită practic imposibilă.
MSC-Mibatron vă recomandă de asemenea seria de microcontrolere Renesas AE470G, care constă din controlere pentru comunicaţii “wireless” M2M (mashine-to-mashine). Microcontrolerele Renesas AE470G sunt construite in jurul nucleului MCU AE-4 avand integrată o memorie rapidă EEPROM de 144Kbytes care funcţionează intre -40 ... +105 grade C, garantează 500,000 de cicluri de scriere/citire şi poate menţine datele peste 10 ani.
Una din aplicaţiile realizate cu un circuit din această serie este “RSA SecureID800 Authenticator”, un token hibrid bazat pe tehnologia “smart card” cu posibilitatea de a genera OTP. Acest aparat oferă posibilitatea angajaţilor unei firme să adere la politica de securitate generală definită de conducerea acesteia prin generarea unui cod menit să asigure atat accesul securizat de la distanţă cat şi accesul securizat la date din interiorul intreprinderii. Intreaga infrastructură de securitate a firmei poate fi definită de cadrele de specialitate fără a fi vizibilă pentru toţi angajaţii. Prin simpla cuplare a token-ului RSA SecureID800 la un port USB se poate obţine:
- identificarea utilizatorului PC-ului folosit la locul de muncă;
- decodarea unui “drive hard” adiacent criptat;
- validarea unei conexiuni securizate la un VPN sau punct de access “wireless”;
- controlul accesului asupra unui domeniu de date limitat din intreprindere;
- criptare de documente şi fişiere care trebuie protejate;
- semnarea digitală şi criptarea de email-uri.
Costul unui astfel de token poate fi intre 55 şi 700 de USD in funcţie de cantitatea cumpărată şi de durata lui de viaţă. La apariţia lui pe piaţă el costa cateva mii de USD. Din păcate durata maximă de viaţă a token-ilor de la RSA este de maxim 3 ani.
De asemenea, trebuie să stiti faptul că toate familiile noi de microcontrolere Renesas: R8C, M16C, M32C, R32C conţin o funcţie de blocare a accesului la programul din memoria “FLASH” menţinand un acces serial care este filtrat cu un cod lung de 7bytes.http://www.qtl.co.il/img/copy.png

gessle
02-11-09, 18:36
This tutorial helps you to understand


What is SHA1?
SHA1 Algorithm Overview
SHA1 Implementation in Java
SHA1 Implementation in PHP
SHA1 Implementation in Perl

What is SHA1
SHA1 (Secure Hash Algorithm 1) is message-digest algorithm, which takes an input message of any length < 2^64 bits and produces a 160-bit output as the message digest.
Based on the SHA1 RFC document, the SHA-1 is called secure because it is computationally infeasible to find a message which corresponds to a given message digest, or to find two different messages which produce the same message digest. Any change to a message in transit will, with very high probability, result in a different message digest, and the signature will fail to verify.
The original specification of the algorithm was published in 1993 as the Secure Hash Standard, FIPS PUB 180, by US government standards agency NIST (National Institute of Standards and Technology). This version is now often referred to as "SHA0".
SHA-0 was withdrawn by the NSA shortly after publication and was superseded by the revised version, published in 1995 in FIPS PUB 180-1 and commonly referred to as "SHA1".
SHA1 Algorithm Overview
SHA1 algorithm is well described in RFC 3174 - US Secure Hash Algorithm 1 (SHA1). Below is a quick overview of the algorithm.
SHA1 algorithm consists of 6 tasks:
Task 1. Appending Padding Bits. The original message is "padded" (extended) so that its length (in bits) is congruent to 448, modulo 512. The padding rules are:


The original message is always padded with one bit "1" first.
Then zero or more bits "0" are padded to bring the length of the message up to 64 bits fewer than a multiple of 512.

Task 2. Appending Length. 64 bits are appended to the end of the padded message to indicate the length of the original message in bytes. The rules of appending length are:


The length of the original message in bytes is converted to its binary format of 64 bits. If overflow happens, only the low-order 64 bits are used.
Break the 64-bit length into 2 words (32 bits each).
The low-order word is appended first and followed by the high-order word.



Task 3. Preparing Processing Functions. SHA1 requires 80 processing functions defined as:
f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) ( 0 <= t <= 19)
f(t;B,C,D) = B XOR C XOR D (20 <= t <= 39)
f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40 <= t <= 59)
f(t;B,C,D) = B XOR C XOR D (60 <= t <= 79)
Task 4. Preparing Processing Constants. SHA1 requires 80 processing constant words defined as:
K(t) = 0x5A827999 ( 0 <= t <= 19)
K(t) = 0x6ED9EBA1 (20 <= t <= 39)
K(t) = 0x8F1BBCDC (40 <= t <= 59)
K(t) = 0xCA62C1D6 (60 <= t <= 79)
Task 5. Initializing Buffers. SHA1 algorithm requires 5 word buffers with the following initial values:
H0 = 0x67452301
H1 = 0xEFCDAB89
H2 = 0x98BADCFE
H3 = 0x10325476
H4 = 0xC3D2E1F0
Task 6. Processing Message in 512-bit Blocks. This is the main task of SHA1 algorithm, which loops through the padded and appended message in blocks of 512 bits each. For each input block, a number of operations are performed. This task can be described in the following pseudo code slightly modified from the RFC 3174's method 1:
Input and predefined functions:
M[1, 2, ..., N]: Blocks of the padded and appended message
f(0;B,C,D), f(1,B,C,D), ..., f(79,B,C,D): Defined as above
K(0), K(1), ..., K(79): Defined as above
H0, H1, H2, H3, H4, H5: Word buffers with initial values

Algorithm:
For loop on k = 1 to N

(W(0),W(1),...,W(15)) = M[k] /* Divide M[k] into 16 words */

For t = 16 to 79 do:
W(t) = (W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)) <<< 1

A = H0, B = H1, C = H2, D = H3, E = H4

For t = 0 to 79 do:
TEMP = A<<<5 + f(t;B,C,D) + E + W(t) + K(t)
E = D, D = C, C = B<<<30, B = A, A = TEMP
End of for loop

H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E
End of for loop

Output:
H0, H1, H2, H3, H4, H5: Word buffers with final message digest
Step 5. Output. The contents in H0, H1, H2, H3, H4, H5 are returned in sequence the message digest.
SHA1 Implementation in Java
Sun provides SHA1 algorithm in Java under their JCE (Java Cryptography Extension) package, which is included in JDK 1.5.
Sun's implementation of SHA1 can be accessed through a generic class called MessageDigest. Here are the main methods of MessageDigest class:


getInstance("SHA1") - Returns a message digest object represents a specific implementation of SHA1 algorithm from the default provider, Sun.
getProvider() - Returns the provider name of the current object.
update(bytes) - Updates the input message by appending a byte array at the end.
digest() - Performs SHA1 algorithm on the current input message and returns the message digest as a byte array. This method also resets the input message to an empty byte string.
reset() - Resets the input message to an empty byte string.



Here is a sample Java program to show you how to use the MessageDigest class to perform some tests on SHA1 algorithms.

*/
import java.security.*;
class JceSha1Test {
public static void main(String[] a) {
try {
MessageDigest md = MessageDigest.getInstance("SHA1");
System.out.println("Message digest object info: ");
System.out.println(" Algorithm = "+md.getAlgorithm());
System.out.println(" Provider = "+md.getProvider());
System.out.println(" toString = "+md.toString());

String input = "";
md.update(input.getBytes());
byte[] output = md.digest();
System.out.println();
System.out.println("SHA1(\""+input+"\") =");
System.out.println(" "+bytesToHex(output));

input = "abc";
md.update(input.getBytes());
output = md.digest();
System.out.println();
System.out.println("SHA1(\""+input+"\") =");
System.out.println(" "+bytesToHex(output));

input = "abcdefghijklmnopqrstuvwxyz";
md.update(input.getBytes());
output = md.digest();
System.out.println();
System.out.println("SHA1(\""+input+"\") =");
System.out.println(" "+bytesToHex(output));

} catch (Exception e) {
System.out.println("Exception: "+e);
}
}
public static String bytesToHex(byte[] b) {
char hexDigit[] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
StringBuffer buf = new StringBuffer();
for (int j=0; j<b.length; j++) {
buf.append(hexDigit[(b[j] >> 4) & 0x0f]);
buf.append(hexDigit & 0x0f]);
}
return buf.toString();
}
}
If you run this sample program with JDK 1.5, you should get the following output:
Message digest object info:
Algorithm = SHA1
Provider = SUN version 1.5
toString = SHA1 Message Digest from SUN, <initialized>


SHA1("") =
DA39A3EE5E6B4B0D3255BFEF95601890AFD80709

SHA1("abc") =
A9993E364706816ABA3E25717850C26C9CD0D89D

SHA1("abcdefghijklmnopqrstuvwxyz") =
32D10C7B8CF96570CA04CE37F2A19D84240D3A89
SHA1 Implementation in PHP
If you are interested in using SHA1 in PHP, you can use the built-in function sha1(). Here is a sample program showing you how to use sha1() function:
<?php # PhpSha1Test.php

#
$input = "";
$output = sha1($input);
print("\n");
print("SHA1(\"".$input."\") =\n");
print(" $output\n");

$input = "abc";
$output = sha1($input);
print("\n");
print("SHA1(\"".$input."\") =\n");
print(" $output\n");

$input = "abcdefghijklmnopqrstuvwxyz";
$output = sha1($input);
print("\n");
print("SHA1(\"".$input."\") =\n");
print(" $output\n");
?>

If you run this sample program with PHP 5, you should get:
SHA1("") = da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA1("abc") = a9993e364706816aba3e25717850c26c9cd0d89d SHA1("abcdefghijklmnopqrstuvwxyz") = 32d10c7b8cf96570ca04ce37f2a19d84240d3a89 SHA1 Implementation in Perl
If you are interested in using SHA1 in Perl, you can look a very interesting implementation by John Allen in 8 lines of perl5. Here is a copy of John's code, stored in PerlSha1In8Lines.pl:
#!/usr/bin/perl -iD9T4C`>_-JXF8NMS^$#)4=L/2X?!:@GF9;MGKH8\;O-S*8L'6 @A=unpack"N*",unpack u,$^I;@K=splice@A,5,4;sub M{($x=pop)-($m=1+~0)*int$x/$m}; sub L{$n=pop;($x=pop)<<$n|2**$n-1&$x>>32-$n}@F=(sub{$b&($c^$d)^$d},$S=sub{$b^$c ^$d},sub{($b|$c)&$d|$b&$c},$S);do{$l+=$r=read STDIN,$_,64;$r++,$_.="\x80"if$r< 64&&!$p++;@W=unpack N16,$_."\0"x7;$W[15]=$l*8 if$r<57;for(16..79){push@W,L$W[$_ -3]^$W[$_-8]^$W[$_-14]^$W[$_-16],1}($a,$b,$c,$d,$e)=@A;for(0..79){$t=M&{$F[$_/ 20]}+$e+$W[$_]+$K[$_/20]+L$a,5;$e=$d;$d=$c;$c=L$b,30;$b=$a;$a=$t}$v='a';@A=map{ M$_+${$v++}}@A}while$r>56;printf'%.8x'x5 ."\n",@A To test this Perl program on Windows, I did the following in a command window:
>copy con empty.txt ^Z 1 file(s) copied. >perl PerlSha1In8Lines.pl < empty.txt da39a3ee5e6b4b0d3255bfef95601890afd80709 >copy con abc.txt abc^Z 1 file(s) copied. >perl PerlSha1In8Lines.pl < abc.txt a9993e364706816aba3e25717850c26c9cd0d89d >copy con a_to_z.txt abcdefghijklmnopqrstuvwxyz^Z 1 file(s) copied. >perl PerlSha1In8Lines.pl < a_to_z.txt 32d10c7b8cf96570ca04ce37f2a19d84240d3a89 The output proves that John's program works perfectly. Note that:


"copy con file_name" command allows to copy enter data from ***board into a new file.
^Z stands for (Ctrl-Z). It sends an end-of-file signal to the "copy" command.

[B]Conclusions:


SHA1 is a message digest algorithm producing 160 bits of data.
Most modern programming languages provides SHA1 algorithm as built-in functions.

http://www.qtl.co.il/img/copy.png

gessle
02-11-09, 20:09
Using only the SHA-256 algorithm

You can downgrade passwords when user password updates are retained in both the old and new encoding. Adaptive Server retains the old encoding to use after downgrade to an earlier release.

To end the period when password downgrade is allowed, execute:
sp_passwordpolicy set, "allow password downgrade", 0
Before executing this command, administrators should examine login accounts with sp_displaylogin to determine if the login account has been used, and whether the password is stored in the new SHA-256 encoding. If the password is not encoded with the new encoding, the account is locked by this action, and the password is reset with a generated password. To use the account again, administrator intervention is required to unlock the account and give the user a newly generated password.
The administrator may want to save the output from this command because it can contain information about locked login accounts and generated passwords for those accounts.
Adaptive Server takes the following actions when the password downgrade period ends:


The datetime when the password downgrade period ended is recorded in master.dbo.sysattributes.
The value of each password column in syslogins is rewritten to only use the new password on-disk structure.
The logins that have not transitioned to the new algorithm have the password reset to a new server-generated password in the new SHA-256 format, and the login is locked. The generated password is displayed only to the administrator executing the sp_passwordpolicy procedure above.

After the sp_passwordpolicy procedure completes, the following behavior is expected:


The authentication of logins is done using the new algorithm only.
Only the new password on disk structure for the password column is used.
Attempts to use the locked logins will fail authentication. In order to use the logins that were locked, the administrator must unlock the login with sp_locklogin and you must use the password generated by sp_passwordpolicy. Alternatively, the administrator may prefer to assign a new password instead of the generated password for locked login accounts.

Example 1

This example prepares an upgraded server to use only SHA-256. Examine login accounts to determine which encryption is used by the account using sp_displaylogin.
1> sp_displaylogin login993
2> go
Suid: 70
Loginame: login933
Fullname:
Default Database: master
Default Language:
Auto Login Script:
Configured Authorization:
Locked: NO
Date of Last Password Change: Apr 20 2007 2:55PM
Password expiration interval: 0
Password expired: NO
Minimum password length: 0
Maximum failed logins: 3
Current failed login attempts:
Authenticate with: ANY
Login Password Encryption: SYB-PROP
Last login date:
(return status = 0)
The value “SYB-PROP” from the line Login Password Encryption: SYB-PROP indicates that only the old, Sybase proprietary password encryption is used for this account. This login has not been used since upgrade to Adaptive Server and would be locked and password reset if the procedure “sp_passwordpolicy 'set', 'allow password downgrade', 0” is executed.
After the first login to the account after upgrading to Adaptive Server , the line would changed to show value “SYB-PROP, SHA-256” to show that both old and new encryption is used:
Login Password Encryption: SYB-PROP,SHA-256
This is the desired state for all active login accounts, so that executing “sp_passwordpolicy 'set', 'allow password downgrade', 0” does not lock and reset the password for accounts.
After the “sp_passwordpolicy 'set', 'allow password downgrade', 0” procedure is executed, only the new encryption is used, and the following line appears:
Login Password Encryption: SHA-256
Login accounts that show this value are fully transitioned to use the new, stronger, on-disk encryption algorithm.
Example 2

This example executes “sp_passwordpolicy 'set', 'allow password downgrade', 0” when all accounts have transitioned to new algorithm
When all passwords have been changed to use the new algorithm, executing the command shows no accounts reset or locked.
1> sp_passwordpolicy 'set', 'allow password downgrade', 0
2> go
Old password encryption algorithm usage eliminated from 0 login accounts,
changes are committed.
(return status = 0)
Example 3

This example executes “sp_passwordpolicy 'set', 'allow password downgrade', 0” with accounts that have not transitioned to new algorithm
In this example, 990 out of 1000 login accounts have transitioned to using the new SHA-256 algorithm, but 10 accounts were still using SYB-PROP algorithm:
1> sp_passwordpolicy 'set', 'allow password downgrade', 0
2> go
Old password encryption algorithm found for login name login1000, suid 3,
ver1 =5, ver2 = 0, resetting password to EcJxKmMvOrDsC4
Old password encryption algorithm found for login name login999, suid 4,
ver1 =5, ver2 = 0, resetting password to MdZcUaFpXkFtM1
Old password encryption algorithm found for login name login998, suid 5,
ver1 =5, ver2 = 0, resetting password to ZePiZdSeMqBdE6
Old password encryption algorithm found for login name login997, suid 6,
ver1 =5, ver2 = 0, resetting password to IfWpXvGlBgDgW7
Old password encryption algorithm found for login name login996, suid 7,
ver1 =5, ver2 = 0, resetting password to JhDjYnGcXwObI8
Old password encryption algorithm found for login name login995, suid 8,
ver1 =5, ver2 = 0, resetting password to QaXlRuJlCrFaE6
Old password encryption algorithm found for login name login994, suid 9,
ver1 =5, ver2 = 0, resetting password to HlHcZdRrYcKyB2
Old password encryption algorithm found for login name login993, suid 10,
ver1 =5, ver2 = 0, resetting password to UvMrXoVqKmZvU6
Old password encryption algorithm found for login name login992, suid 11,
ver1 =5, ver2 = 0, resetting password to IxIwZqHxEePbX5
Old password encryption algorithm found for login name login991, suid 12,
ver1 =5, ver2 = 0, resetting password to HxYrPyQbLzPmJ3
Old password encryption algorithm usage eliminated from 10 login accounts,
changes are committed.
(return status = 1)
http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc31654.1502/html/sag1/note.gifThe login name, suid, and generated password are displayed to the administrator executing the procedure. The output of the command shows all 10 accounts that have not transitioned are reset (and locked).http://www.qtl.co.il/img/copy.png