- Ја почнал/а темата
- #1
StarBuck
Intern
StarBuck's setup
- Processor & Cooler
- Quad-Core Intel Xeon E5 3,7
- Storage
- 256 GB SSD
- RAM
- 12 GB DDR3-RAM
- Video card
- Dual AMD FirePro D300 GDDR5 4GB
- Monitor
- IPS
- OS
- Yosemite
Пред некој ден имав интересно предавање од млад дечко од Србија што моментално работи за Сони Ериксон во одделот за security, па сакав со вас да споделам два нови методи што тој ни ги кажа, со кои се загрозуваат системи за безбедност.
1. Execution Time
Оваа методологија ја имаат некои искористено за пробивање на пин кодови, како на пример што се пиновите за кредитни картички и слично.
Тоа што некои успеале да направат е следново:
-Имаат апликација која го мери execution time-от на друга апликација
-Првиот пат, пинот го внесуваат како 0000 и мерат кое е времето на екзекуција (пример 0.01 секунда)
-Вториот пат внесуваат 1000 и мерат (пример 0.03 секунда повторно)
-Третиот пат внесуваат 2000 и мерат (пример 0.01 секунди)
-Четвриот пат внесуваат 3000 и мерат (пример 0.02 секунди)
-Постапката се повторува и се гледа за кои од 10те први бројки за пинот времето на егзекуција е најголемо, пример за бројот 1000 во овој случај.
-Потоа се продолжува со наредните 3 цифри, земајќи ја првата цифра како 1, и на крајот се добива валидниот пин.
2. Hardware vs CryptoSystems
Ова е начин на пробивање на систем за енкрипција, на кои клучот (encryption key) им е скриен во самиот систем, и неможе да се екстрактира. Овие системи се користат така што како инпут давате некoj plain text, системот го енкриптира и добиваte cypher text. Начинот на кој што овие системи можат да се пробијат е следниот:
-За системот се конектира осцилоскоп, кој го мери севкупниот output на системот.
-На системот му се предава некој plain text
-Се мери износот добиен од осцилоскопот додека системот го енкриптира текстот
-Се добива некој граф што личи на следното:
-На прв поглед нема никакво значење, меѓутоа после неколку различни "интервенции", може да се добие нешто што е налик на овој граф
-Од тука е многу јасно, секоја ниска точка е 0, висока 1... Од целиот output може да се добие 01100101001... итн, и ете го клучот
Не се радувајте пред време, затоа што овие слабости на системите можат да се поправат на следите начини:
1. Општо познато е дека програмите имаат различни патеки по кои можат да се егзекутираат, и нормално е дека за секоја од нив е потребно различно време. Ова може да се избегне со додавање неколку реда код, кои ќе се осигураат дека секоја execution path на програмата ќе трае execution time + рандом време, кое нема да е поврзано со пресметките кои што програмата ги прави.
2. Криптографскиот систем може да се модифицира на начин така што износот за време на енкрипција ќе наликува на следното:
And there you have it
1. Execution Time
Оваа методологија ја имаат некои искористено за пробивање на пин кодови, како на пример што се пиновите за кредитни картички и слично.
Тоа што некои успеале да направат е следново:
-Имаат апликација која го мери execution time-от на друга апликација
-Првиот пат, пинот го внесуваат како 0000 и мерат кое е времето на екзекуција (пример 0.01 секунда)
-Вториот пат внесуваат 1000 и мерат (пример 0.03 секунда повторно)
-Третиот пат внесуваат 2000 и мерат (пример 0.01 секунди)
-Четвриот пат внесуваат 3000 и мерат (пример 0.02 секунди)
-Постапката се повторува и се гледа за кои од 10те први бројки за пинот времето на егзекуција е најголемо, пример за бројот 1000 во овој случај.
-Потоа се продолжува со наредните 3 цифри, земајќи ја првата цифра како 1, и на крајот се добива валидниот пин.
2. Hardware vs CryptoSystems
Ова е начин на пробивање на систем за енкрипција, на кои клучот (encryption key) им е скриен во самиот систем, и неможе да се екстрактира. Овие системи се користат така што како инпут давате некoj plain text, системот го енкриптира и добиваte cypher text. Начинот на кој што овие системи можат да се пробијат е следниот:
-За системот се конектира осцилоскоп, кој го мери севкупниот output на системот.
-На системот му се предава некој plain text
-Се мери износот добиен од осцилоскопот додека системот го енкриптира текстот
-Се добива некој граф што личи на следното:

-На прв поглед нема никакво значење, меѓутоа после неколку различни "интервенции", може да се добие нешто што е налик на овој граф

-Од тука е многу јасно, секоја ниска точка е 0, висока 1... Од целиот output може да се добие 01100101001... итн, и ете го клучот
Не се радувајте пред време, затоа што овие слабости на системите можат да се поправат на следите начини:
1. Општо познато е дека програмите имаат различни патеки по кои можат да се егзекутираат, и нормално е дека за секоја од нив е потребно различно време. Ова може да се избегне со додавање неколку реда код, кои ќе се осигураат дека секоја execution path на програмата ќе трае execution time + рандом време, кое нема да е поврзано со пресметките кои што програмата ги прави.
2. Криптографскиот систем може да се модифицира на начин така што износот за време на енкрипција ќе наликува на следното:

And there you have it