Bitcoin Forum
November 02, 2024, 03:11:12 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 [13]  All
  Print  
Author Topic: Хранение SEED фразы кошелька  (Read 4913 times)
johhnyUA
Legendary
*
Offline Offline

Activity: 2436
Merit: 1849


Crypto for the Crypto Throne!


View Profile
February 08, 2020, 03:23:03 PM
 #241

Тоесть тупо перевести одно в другое не выйдет.
В одну сторону легко переводится с карандашом в руках, вот из энтропии в фразу последнее слово нужно получать из хеша, там без компа не получится.

Я имел ввиду из мнемоники назад в энтропию (чтобы например для bip32 использовать).

В сторону из энтропии в мнемонику тоже не очень просто. Надо от всей энтропии (EN) взять sha256(EN/32), а с карандашом хэшировать хоть и можно, но не особо просто и удобно  Cheesy

.freebitcoin.       ▄▄▄█▀▀██▄▄▄
   ▄▄██████▄▄█  █▀▀█▄▄
  ███  █▀▀███████▄▄██▀
   ▀▀▀██▄▄█  ████▀▀  ▄██
▄███▄▄  ▀▀▀▀▀▀▀  ▄▄██████
██▀▀█████▄     ▄██▀█ ▀▀██
██▄▄███▀▀██   ███▀ ▄▄  ▀█
███████▄▄███ ███▄▄ ▀▀▄  █
██▀▀████████ █████  █▀▄██
 █▄▄████████ █████   ███
  ▀████  ███ ████▄▄███▀
     ▀▀████   ████▀▀
BITCOIN
DICE
EVENT
BETTING
WIN A LAMBO !

.
            ▄▄▄▄▄▄▄▄▄▄███████████▄▄▄▄▄
▄▄▄▄▄██████████████████████████████████▄▄▄▄
▀██████████████████████████████████████████████▄▄▄
▄▄████▄█████▄████████████████████████████▄█████▄████▄▄
▀████████▀▀▀████████████████████████████████▀▀▀██████████▄
  ▀▀▀████▄▄▄███████████████████████████████▄▄▄██████████
       ▀█████▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀█████▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.PLAY NOW.
igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 08, 2020, 03:42:19 PM
Last edit: February 08, 2020, 03:55:51 PM by igor72
Merited by kzv (1), Symmetrick (1)
 #242

Я имел ввиду из мнемоники назад в энтропию (чтобы например для bip32 использовать).
Из мнемоники в энтропию как раз легко, на бумажке делается за полчаса с перекурами.
Из словаря берешь номера слов, записываешь, вычитая из номера единицу (так как нумерация в словаре с единицы, а нам надо с нуля), переводишь каждое число в двоичную систему, при необходимости дополняя спереди нулями до 11 знаков, получившуюся длинную строку нулей и единиц постепенно по 4 знака (начиная спереди) переводишь в 16-ричную строку, последние 4 (8 для 24 слов) бита не нужны, это чексумма. 

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
February 08, 2020, 05:50:14 PM
 #243

Главное чтобы новички понимали, что мнемоническая фраза не получена из энтропии, а является её человекочитаемым представлением. Если программа хранит число в бинарном виде, а отображает пользователю в виде слова, то это не значит что слово получено из энтропии.
Подождите. Мнемоническая фраза является человекочитаемым представлением энтропии, это так. Но она же и получена из энтропии. И именно она, а не энтропия, является источником дальнейших преобразований.

Она не получена из энтропии, а является её представлением для человека. Нет, в дальнейших преобразованиях участвует сама энтропия, а не слова. Человекочитаемость сида никак не помогает машинным вычислениям.

Quote
Ты на вход подаёшь 64 байта, а нужно 32. Base64 занимает больше байтов, чем сырой поток.
Благодарю, ошибку понял - не учел, что на входе программа ждет текст, а не hex. Сделал то же в https://cryptii.com/pipes/aes-encryption , и там получил с cbc и ctr 48 и 32 байта соответственно.

Верно, 48 и 32 байта, про 64 я погорячился.

что мнемоническая фраза не получена из энтропии, а является её человекочитаемым представлением.

Притом не чистым, а с чек суммой еще. Тоесть тупо перевести одно в другое не выйдет.  А так вообще все толково расписал, приятно читать такие твои посты, аж мерит захотелось поставить  Smiley

Наличие чек-суммы для импорта энтропии вовсе необязательно, поэтому алгоритмически процесс никак не пострадает, если её проверку выпилить из кода клиента. Благодарю.

igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 09, 2020, 05:53:32 AM
 #244

Главное чтобы новички понимали, что мнемоническая фраза не получена из энтропии, а является её человекочитаемым представлением. Если программа хранит число в бинарном виде, а отображает пользователю в виде слова, то это не значит что слово получено из энтропии.
Подождите. Мнемоническая фраза является человекочитаемым представлением энтропии, это так. Но она же и получена из энтропии. И именно она, а не энтропия, является источником дальнейших преобразований.

Она не получена из энтропии, а является её представлением для человека. Нет, в дальнейших преобразованиях участвует сама энтропия, а не слова. Человекочитаемость сида никак не помогает машинным вычислениям.
Вы заблуждаетесь, я тоже так когда-то думал. Прочитайте внимательно этот кусок BIP39:

Quote
To create a binary seed from the mnemonic, we use the PBKDF2 function with a mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" + passphrase (again in UTF-8 NFKD) used as the salt. The iteration count is set to 2048 and HMAC-SHA512 is used as the pseudo-random function. The length of the derived key is 512 bits (= 64 bytes).

This seed can be later used to generate deterministic wallets using BIP-0032 or similar methods.
Между прочим, сидом тут называют 64-байтный результат этого преобразования, а не сид-фразу или энтропию.

Есть и практическое доказательство. Откройте колемановский конвертер и используя одну и ту же энтропию попереключайте язык мнемоники - вы увидите, что дерево ключей меняется, а значит оно зависит от слов, а не от энтропии.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
February 09, 2020, 08:42:39 AM
 #245

Главное чтобы новички понимали, что мнемоническая фраза не получена из энтропии, а является её человекочитаемым представлением. Если программа хранит число в бинарном виде, а отображает пользователю в виде слова, то это не значит что слово получено из энтропии.
Подождите. Мнемоническая фраза является человекочитаемым представлением энтропии, это так. Но она же и получена из энтропии. И именно она, а не энтропия, является источником дальнейших преобразований.

Она не получена из энтропии, а является её представлением для человека. Нет, в дальнейших преобразованиях участвует сама энтропия, а не слова. Человекочитаемость сида никак не помогает машинным вычислениям.
Вы заблуждаетесь, я тоже так когда-то думал. Прочитайте внимательно этот кусок BIP39:

Quote
To create a binary seed from the mnemonic, we use the PBKDF2 function with a mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" + passphrase (again in UTF-8 NFKD) used as the salt. The iteration count is set to 2048 and HMAC-SHA512 is used as the pseudo-random function. The length of the derived key is 512 bits (= 64 bytes).

This seed can be later used to generate deterministic wallets using BIP-0032 or similar methods.
Между прочим, сидом тут называют 64-байтный результат этого преобразования, а не сид-фразу или энтропию.

Есть и практическое доказательство. Откройте колемановский конвертер и используя одну и ту же энтропию попереключайте язык мнемоники - вы увидите, что дерево ключей меняется, а значит оно зависит от слов, а не от энтропии.

Это очень странное решение. Интересно как у него дела с совместимостью, учитывая что словари на клиентах могут отличаться и чек-сумму проверить не получится.

По-моему данные подаваемые на вход тоже следует называть сидом, но если у тебя есть более подходящий термин, то я не настаиваю.

igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 09, 2020, 08:54:48 AM
 #246

Это очень странное решение. Интересно как у него дела с совместимостью, учитывая что словари на клиентах могут отличаться и чек-сумму проверить не получится.
Теоретически на клиентах могут использоваться неанглийские словари, но я ни одного такого не знаю. А так словари BIP39 неизменяемы. Привязка к словарю - одна из причин, почему в Electrum не используется BIP39 при создании кошелька. Там набор слов (даже не слов, а символов) в сид-фразе может быть произвольным, лишь бы соответствовал жестко определенной чек-сумме.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
February 09, 2020, 10:11:10 AM
 #247

Это очень странное решение. Интересно как у него дела с совместимостью, учитывая что словари на клиентах могут отличаться и чек-сумму проверить не получится.
Теоретически на клиентах могут использоваться неанглийские словари, но я ни одного такого не знаю. А так словари BIP39 неизменяемы. Привязка к словарю - одна из причин, почему в Electrum не используется BIP39 при создании кошелька. Там набор слов (даже не слов, а символов) в сид-фразе может быть произвольным, лишь бы соответствовал жестко определенной чек-сумме.

Привязка к словарю была бы, если слова были только представлением сида, как я предполагал ранее. В BIP39 привязки к словарю нет и ничего кроме проверки контрольной суммы не мешает сгенерировать то же самое дерево ключей на клиенте с другим словарём. В описании так и написано:

Quote
The conversion of the mnemonic sentence to a binary seed is completely independent from generating the sentence. This results in rather simple code; there are no constraints on sentence structure and clients are free to implement their own wordlists or even whole sentence generators, allowing for flexibility in wordlists for typo detection or other purposes.

igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 09, 2020, 10:23:01 AM
Last edit: February 09, 2020, 11:11:50 AM by igor72
 #248


Привязка к словарю была бы, если слова были только представлением сида, как я предполагал ранее. В BIP39 привязки к словарю нет и ничего кроме проверки контрольной суммы не мешает сгенерировать то же самое дерево ключей на клиенте с другим словарём.
Хорошо, не привязка, а необходимость использования конкретного словаря для вычисления контрольной суммы. И чтобы восстановить кошелек, нужно кроме сид-фразы еще и свой кастомный словарь хранить. В электруме словарь для восстановления не нужен.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Semon926
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
February 10, 2020, 04:22:48 AM
 #249

я и записываю на бумагу сид и фоткаю и на две флешки
igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 10, 2020, 04:31:26 AM
 #250

я и записываю на бумагу сид и фоткаю и на две флешки
Фоткаете на телефон с интернетом? И на флешки записываете на обычном своем компе? А чем просто запись на бумаге не устраивает?

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
taikuri13
Legendary
*
Offline Offline

Activity: 1288
Merit: 1625



View Profile
February 10, 2020, 07:20:14 AM
 #251

~
Фоткаете на телефон с интернетом? И на флешки записываете на обычном своем компе? А чем просто запись на бумаге не устраивает?

А если телефон на Андроиде, там полно гугловского софта, в том числе и программ, которые с фотографиями работают, синхронизируют. Гугл Фото например очень популярна, там альбомы разные, да и потом эта программа альбомы показывает, посмотрите что было два года назад Smiley

Фотографировать сид - для меня предельно смелый поступок, особенно когда телефон не настроен и на разрешения приложений никто не смотрит.
investgroup
Full Member
***
Offline Offline

Activity: 644
Merit: 135


View Profile
February 10, 2020, 09:21:01 AM
 #252

Ещё в старых backup бывает можно найти много интересного, особенно если учесть, что пришедшие уже после новые монеты так-же доступны по старому _ПУСТОМУ_ на тот момент кошельку...


PS  делай тогда уж темы и безопасные бэкапы чтоли!   Это кстати даже интереснее сидов - сид хоть маленький, там и бумажка решение, но куда и как бэкапить гигабайты?   Не в облака же Wink)
igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 10, 2020, 09:23:20 AM
 #253

Фотографировать сид - для меня предельно смелый поступок, особенно когда телефон не настроен и на разрешения приложений никто не смотрит.
Ну мы же пока не знаем, может он на пленочный "Зенит Е" не на телефон фотографирует? Хотя и в этом случае не лучшее решение.


█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
investgroup
Full Member
***
Offline Offline

Activity: 644
Merit: 135


View Profile
February 10, 2020, 09:26:49 AM
Last edit: February 10, 2020, 11:10:25 AM by xandry
 #254

фотки даже с тупого старого цифрового фотика всё равно рано или поздно окажуться на компе!..

Ну а новые ещё и всякие хитрые радиоинтерфейсы имеют, о которых наверняка NSA позаботилось Wink

Кстати и пленка не факт что спасет - проявочные машины вроде уже давно цифровые?..
Да и сам когда-то захочешь просканировать пленку чтобы было удобнее...

igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 10, 2020, 09:38:11 AM
 #255

Ещё в старых backup бывает можно найти много интересного, особенно если учесть, что пришедшие уже после новые монеты так-же доступны по старому _ПУСТОМУ_ на тот момент кошельку...
Я думаю, те времена, когда раздавались бесплатные монеты на старые приватники, уже в прошлом (бывают изредка и сейчас такие случаи, но там цена монеты почти сразу околонулевая).

Quote
PS  делай тогда уж темы и безопасные бэкапы чтоли!   Это кстати даже интереснее сидов - сид хоть маленький, там и бумажка решение, но куда и как бэкапить гигабайты?   Не в облака же Wink)
Просто не должно быть на компе в открытом виде секретной информации, тогда и в бэкапы она случайно не попадет.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
taikuri13
Legendary
*
Offline Offline

Activity: 1288
Merit: 1625



View Profile
February 10, 2020, 11:10:17 AM
 #256

~
Ну мы же пока не знаем, может он на пленочный "Зенит Е" не на телефон фотографирует? Хотя и в этом случае не лучшее решение.

Представил "шифропанка" со старым телефоном, в ванной фотки проявляет  Grin
Согласен, что не лучшее - слишком много рисков, и при старении пленки и по сохранности фотографий. Примерно то же самое, что карандашом на бумаге записать, но я согласен, что способ со старым фотоаппаратом гораздо более шпионский Smiley
investgroup
Full Member
***
Offline Offline

Activity: 644
Merit: 135


View Profile
February 10, 2020, 02:09:36 PM
 #257

Просто не должно быть на компе в открытом виде секретной информации, тогда и в бэкапы она случайно не попадет.

легко сказать!   А как?   Весь диск чтоли каждый раз бэкапить, сотни гиг?..

Хотя..  можно конечно делать не большие диски, тогда их бэкапить будет легче...


Но опять тот-же вопрос:  как сохранить ключ дешифровки от сканирования памяти вирусом?..
igor72
Legendary
*
Offline Offline

Activity: 2002
Merit: 2079


Crypto Swap Exchange


View Profile
February 10, 2020, 02:21:04 PM
 #258

Просто не должно быть на компе в открытом виде секретной информации, тогда и в бэкапы она случайно не попадет.

легко сказать!   А как?   Весь диск чтоли каждый раз бэкапить, сотни гиг?..
Сид вообще не хранить в цифровом нешифрованном виде, файлы нормальных кошельков шифруются штатными средствами. Или я что-то не понял?
Quote
Но опять тот-же вопрос:  как сохранить ключ дешифровки от сканирования памяти вирусом?..
Никак, наверное. Если вирусы допускать, тогда вообще этим компом не стоит пользоваться.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
December 02, 2020, 11:00:47 PM
 #259

Сегодня поржал(а как еще сказать?):
Мужчина лишился миллиардов рублей из-за выбросившей старую удочку уборщицы

Да хоть в швабре.............)))
Поэтому предпочту гирю(ее труднее вынести)))):
https://bitcointalk.org/index.php?topic=5123995.msg51131708#msg51131708

И ведь прав был классик:
"Пилите Шура, пилите..."

Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 [13]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!